aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos J. Puga Medina <cpm@FreeBSD.org>2017-04-29 23:00:33 +0000
committerCarlos J. Puga Medina <cpm@FreeBSD.org>2017-04-29 23:00:33 +0000
commit633f9296f4a9a6d9f4988a62658038fdd8c8cc4f (patch)
tree2f4294c7dbe2c6fd14de23902212e77c6a108530
parente07f65b746ff1d52d943dd930315f7ec7a0c726a (diff)
downloadports-633f9296f4a9a6d9f4988a62658038fdd8c8cc4f.tar.gz
ports-633f9296f4a9a6d9f4988a62658038fdd8c8cc4f.zip
Add new port www/iridium
Iridium is a free, open, and libre browser modification of the Chromium code base, with privacy being enhanced in several key areas. Automatic transmission of partial queries, keywords, metrics to central services is inhibited and only occurs with consent. WWW: https://iridiumbrowser.de/
Notes
Notes: svn path=/head/; revision=439777
-rw-r--r--www/Makefile1
-rw-r--r--www/iridium/Makefile260
-rw-r--r--www/iridium/distinfo3
-rw-r--r--www/iridium/files/extra-patch-clang112
-rw-r--r--www/iridium/files/iridium-browser.desktop.in11
-rw-r--r--www/iridium/files/iridium.in19
-rw-r--r--www/iridium/files/patch-BUILD.gn173
-rw-r--r--www/iridium/files/patch-apps_ui_views_app__window__frame__view.cc11
-rw-r--r--www/iridium/files/patch-ash_display_mirror__window__controller.cc14
-rw-r--r--www/iridium/files/patch-base_BUILD.gn92
-rw-r--r--www/iridium/files/patch-base__trace_event__process_memory_dump.h11
-rw-r--r--www/iridium/files/patch-base_allocator_allocator__shim.cc11
-rw-r--r--www/iridium/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc77
-rw-r--r--www/iridium/files/patch-base_allocator_allocator__shim__override__libc__symbols.h11
-rw-r--r--www/iridium/files/patch-base_allocator_allocator__shim__unittest.cc36
-rw-r--r--www/iridium/files/patch-base_base__paths__posix.cc20
-rw-r--r--www/iridium/files/patch-base_debug_proc__maps__linux.cc11
-rw-r--r--www/iridium/files/patch-base_debug_stack__trace__posix.cc30
-rw-r--r--www/iridium/files/patch-base_debug_thread__heap__usage__tracker.cc16
-rw-r--r--www/iridium/files/patch-base_files_file__path__unittest.cc11
-rw-r--r--www/iridium/files/patch-base_files_file__path__watcher__kqueue.h13
-rw-r--r--www/iridium/files/patch-base_files_file__util.h11
-rw-r--r--www/iridium/files/patch-base_linux__util.cc18
-rw-r--r--www/iridium/files/patch-base_native__library__posix.cc11
-rw-r--r--www/iridium/files/patch-base_posix_unix__domain__socket__linux.cc45
-rw-r--r--www/iridium/files/patch-base_posix_unix__domain__socket__linux__unittest.cc18
-rw-r--r--www/iridium/files/patch-base_process_internal__linux.h11
-rw-r--r--www/iridium/files/patch-base_process_launch.cc11
-rw-r--r--www/iridium/files/patch-base_process_launch.h20
-rw-r--r--www/iridium/files/patch-base_process_launch__posix.cc10
-rw-r--r--www/iridium/files/patch-base_process_memory.cc11
-rw-r--r--www/iridium/files/patch-base_process_memory.h11
-rw-r--r--www/iridium/files/patch-base_process_memory__stubs.cc18
-rw-r--r--www/iridium/files/patch-base_process_memory__unittest.cc22
-rw-r--r--www/iridium/files/patch-base_process_process__handle__freebsd.cc11
-rw-r--r--www/iridium/files/patch-base_process_process__info__linux.cc39
-rw-r--r--www/iridium/files/patch-base_process_process__iterator__freebsd.cc36
-rw-r--r--www/iridium/files/patch-base_process_process__metrics.h33
-rw-r--r--www/iridium/files/patch-base_process_process__metrics__freebsd.cc36
-rw-r--r--www/iridium/files/patch-base_process_process__posix.cc90
-rw-r--r--www/iridium/files/patch-base_profiler_stack__sampling__profiler__unittest.cc11
-rw-r--r--www/iridium/files/patch-base_security__unittest.cc11
-rw-r--r--www/iridium/files/patch-base_strings_safe__sprintf.cc16
-rw-r--r--www/iridium/files/patch-base_sys__info__freebsd.cc72
-rw-r--r--www/iridium/files/patch-base_sys__info__posix.cc20
-rw-r--r--www/iridium/files/patch-base_test_BUILD.gn11
-rw-r--r--www/iridium/files/patch-base_test_launcher_test__launcher.cc13
-rw-r--r--www/iridium/files/patch-base_test_test__file__util__posix.cc11
-rw-r--r--www/iridium/files/patch-base_third__party_libevent_BUILD.gn12
-rw-r--r--www/iridium/files/patch-base_threading_platform__thread.h11
-rw-r--r--www/iridium/files/patch-base_threading_platform__thread__linux.cc30
-rw-r--r--www/iridium/files/patch-base_threading_platform__thread__posix.cc11
-rw-r--r--www/iridium/files/patch-base_threading_thread__task__runner__handle.cc26
-rw-r--r--www/iridium/files/patch-base_trace__event_malloc__dump__provider.cc11
-rw-r--r--www/iridium/files/patch-base_trace__event_process__memory__dump.cc11
-rw-r--r--www/iridium/files/patch-breakpad_BUILD.gn11
-rw-r--r--www/iridium/files/patch-breakpad_src_build_common.gypi18
-rw-r--r--www/iridium/files/patch-breakpad_src_common_simple__string__dictionary.h11
-rw-r--r--www/iridium/files/patch-build_config_BUILD.gn29
-rw-r--r--www/iridium/files/patch-build_config_BUILDCONFIG.gn66
-rw-r--r--www/iridium/files/patch-build_config_allocator.gni16
-rw-r--r--www/iridium/files/patch-build_config_clang_BUILD.gn20
-rw-r--r--www/iridium/files/patch-build_config_compiler_BUILD.gn100
-rw-r--r--www/iridium/files/patch-build_config_crypto.gni8
-rw-r--r--www/iridium/files/patch-build_config_features.gni19
-rw-r--r--www/iridium/files/patch-build_config_linux_gtk2_BUILD.gn11
-rw-r--r--www/iridium/files/patch-build_config_linux_gtk3_BUILD.gn11
-rw-r--r--www/iridium/files/patch-build_config_linux_gtk_BUILD.gn11
-rw-r--r--www/iridium/files/patch-build_config_linux_pkg-config.py26
-rw-r--r--www/iridium/files/patch-build_config_sanitizers_BUILD.gn20
-rw-r--r--www/iridium/files/patch-build_config_sanitizers_sanitizers.gni13
-rw-r--r--www/iridium/files/patch-build_config_ui.gni36
-rw-r--r--www/iridium/files/patch-build_linux_libpci_BUILD.gn53
-rw-r--r--www/iridium/files/patch-build_secondary_third__party_nss_BUILD.gn11
-rw-r--r--www/iridium/files/patch-build_toolchain_gcc__toolchain.gni52
-rw-r--r--www/iridium/files/patch-build_toolchain_get__concurrent__links.py17
-rw-r--r--www/iridium/files/patch-build_toolchain_linux_BUILD.gn24
-rw-r--r--www/iridium/files/patch-cc_layers_scrollbar__layer__impl__base.cc13
-rw-r--r--www/iridium/files/patch-cc_trees_property__tree.cc20
-rw-r--r--www/iridium/files/patch-chrome_BUILD.gn41
-rw-r--r--www/iridium/files/patch-chrome_app_chrome__command__ids.h11
-rw-r--r--www/iridium/files/patch-chrome_app_chrome__main__delegate.cc115
-rw-r--r--www/iridium/files/patch-chrome_app_chrome__main__delegate.h11
-rw-r--r--www/iridium/files/patch-chrome_app_chromium__strings.grd11
-rw-r--r--www/iridium/files/patch-chrome_app_generated__resources.grd38
-rw-r--r--www/iridium/files/patch-chrome_app_google__chrome__strings.grd11
-rw-r--r--www/iridium/files/patch-chrome_app_mash_mash__runner.cc11
-rw-r--r--www/iridium/files/patch-chrome_app_resources_locale__settings.grd11
-rw-r--r--www/iridium/files/patch-chrome_app_settings__strings.grdp20
-rw-r--r--www/iridium/files/patch-chrome_app_shutdown__signal__handlers__posix.cc22
-rw-r--r--www/iridium/files/patch-chrome_browser_BUILD.gn20
-rw-r--r--www/iridium/files/patch-chrome_browser_about__flags.cc34
-rw-r--r--www/iridium/files/patch-chrome_browser_browser__process__impl.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_browser__process__impl.h11
-rw-r--r--www/iridium/files/patch-chrome_browser_browser__resources.grd11
-rw-r--r--www/iridium/files/patch-chrome_browser_chrome__browser__main.cc65
-rw-r--r--www/iridium/files/patch-chrome_browser_chrome__browser__main__linux.cc27
-rw-r--r--www/iridium/files/patch-chrome_browser_chrome__browser__main__posix.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_chrome__content__browser__client.cc92
-rw-r--r--www/iridium/files/patch-chrome_browser_chrome__content__browser__client.h17
-rw-r--r--www/iridium/files/patch-chrome_browser_defaults.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_diagnostics_diagnostics__writer.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_diagnostics_diagnostics__writer.h11
-rw-r--r--www/iridium/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_download_download__commands.cc38
-rw-r--r--www/iridium/files/patch-chrome_browser_download_download__commands.h12
-rw-r--r--www/iridium/files/patch-chrome_browser_download_download__prefs.cc65
-rw-r--r--www/iridium/files/patch-chrome_browser_download_download__prefs.h20
-rw-r--r--www/iridium/files/patch-chrome_browser_download_download__query.cc14
-rw-r--r--www/iridium/files/patch-chrome_browser_download_download__shelf__context__menu.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_extensions_BUILD.gn24
-rw-r--r--www/iridium/files/patch-chrome_browser_extensions_activity__log_activity__log.cc14
-rw-r--r--www/iridium/files/patch-chrome_browser_extensions_api_image__writer__private_image__writer__private__api.cc15
-rw-r--r--www/iridium/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h11
-rw-r--r--www/iridium/files/patch-chrome_browser_extensions_api_messaging_message__service.cc35
-rw-r--r--www/iridium/files/patch-chrome_browser_extensions_api_music__manager__private_device__id__linux.cc66
-rw-r--r--www/iridium/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_extensions_bookmark__app__helper.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_extensions_external__provider__impl.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_first__run_first__run__internal__posix.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_gpu_gl__string__manager.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_interstitials_chrome__controller__client.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc15
-rw-r--r--www/iridium/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc14
-rw-r--r--www/iridium/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_memory__details.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc18
-rw-r--r--www/iridium/files/patch-chrome_browser_net_async__dns__field__trial.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_notifications_message__center__notification__manager.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc14
-rw-r--r--www/iridium/files/patch-chrome_browser_platform__util.h11
-rw-r--r--www/iridium/files/patch-chrome_browser_plugins_plugins__resource__service.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_process__singleton__posix.cc34
-rw-r--r--www/iridium/files/patch-chrome_browser_profiles_profile__impl__io__data.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc29
-rw-r--r--www/iridium/files/patch-chrome_browser_renderer__preferences__util.cc38
-rw-r--r--www/iridium/files/patch-chrome_browser_resources_safe__browsing_BUILD.gn11
-rw-r--r--www/iridium/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py19
-rw-r--r--www/iridium/files/patch-chrome_browser_resources_vulcanize.gni11
-rw-r--r--www/iridium/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc15
-rw-r--r--www/iridium/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_safe__browsing_permission__reporter.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_search_local__files__ntp__source.cc16
-rw-r--r--www/iridium/files/patch-chrome_browser_speech_tts__controller__impl.cc16
-rw-r--r--www/iridium/files/patch-chrome_browser_sync_chrome__sync__client.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group.cc56
-rw-r--r--www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group.h39
-rw-r--r--www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc44
-rw-r--r--www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h50
-rw-r--r--www/iridium/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc16
-rw-r--r--www/iridium/files/patch-chrome_browser_task__manager_task__manager__observer.h16
-rw-r--r--www/iridium/files/patch-chrome_browser_tracing_crash__service__uploader.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_BUILD.gn11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_browser__command__controller.cc38
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_browser__view__prefs.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_input__method_input__method__engine.h11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_libgtkui_BUILD.gn11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc10
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc23
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_tab__helpers.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc15
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc50
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_accelerator__table.cc29
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc37
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_chrome__views__delegate.h11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_first__run__dialog.cc24
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_frame_browser__frame.cc25
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__layout.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_message__center_message__center__frame__view.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc29
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_views_tabs_tab__strip.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_webui_about__ui.cc70
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_webui_extensions_extension__loader__handler.cc14
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_webui_options_browser__options__handler.cc45
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_webui_options_browser__options__handler.h11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h11
-rw-r--r--www/iridium/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_web__applications_web__app.cc20
-rw-r--r--www/iridium/files/patch-chrome_browser_web__applications_web__app.h11
-rw-r--r--www/iridium/files/patch-chrome_common_BUILD.gn16
-rw-r--r--www/iridium/files/patch-chrome_common_chrome__paths.cc53
-rw-r--r--www/iridium/files/patch-chrome_common_chrome__paths.h29
-rw-r--r--www/iridium/files/patch-chrome_common_chrome__paths__internal.h11
-rw-r--r--www/iridium/files/patch-chrome_common_chrome__switches.cc11
-rw-r--r--www/iridium/files/patch-chrome_common_chrome__switches.h11
-rw-r--r--www/iridium/files/patch-chrome_common_extensions_chrome__extensions__client.cc14
-rw-r--r--www/iridium/files/patch-chrome_common_extensions_command.cc11
-rw-r--r--www/iridium/files/patch-chrome_common_features.gni11
-rw-r--r--www/iridium/files/patch-chrome_common_pref__names.cc29
-rw-r--r--www/iridium/files/patch-chrome_common_pref__names.h29
-rw-r--r--www/iridium/files/patch-chrome_common_url__constants.cc20
-rw-r--r--www/iridium/files/patch-chrome_common_url__constants.h20
-rw-r--r--www/iridium/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc38
-rw-r--r--www/iridium/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h20
-rw-r--r--www/iridium/files/patch-chrome_test_BUILD.gn167
-rw-r--r--www/iridium/files/patch-chrome_test_base_in__process__browser__test.cc13
-rw-r--r--www/iridium/files/patch-chrome_test_base_testing__browser__process.h13
-rw-r--r--www/iridium/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc20
-rw-r--r--www/iridium/files/patch-chromecast_BUILD.gn11
-rw-r--r--www/iridium/files/patch-chromecast_browser_BUILD.gn11
-rw-r--r--www/iridium/files/patch-chromecast_browser_cast__browser__main__parts.cc29
-rw-r--r--www/iridium/files/patch-chromecast_browser_cast__content__browser__client.cc11
-rw-r--r--www/iridium/files/patch-chromecast_browser_metrics_BUILD.gn11
-rw-r--r--www/iridium/files/patch-chromecast_crash_BUILD.gn11
-rw-r--r--www/iridium/files/patch-components_BUILD.gn13
-rw-r--r--www/iridium/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc14
-rw-r--r--www/iridium/files/patch-components_autofill_core_browser_autofill__experiments.cc11
-rw-r--r--www/iridium/files/patch-components_content__settings_core_browser_website__settings__registry.cc12
-rw-r--r--www/iridium/files/patch-components_content__settings_core_browser_website__settings__registry.h15
-rw-r--r--www/iridium/files/patch-components_cookie__config_cookie__store__util.cc24
-rw-r--r--www/iridium/files/patch-components_crash_content_app_BUILD.gn11
-rw-r--r--www/iridium/files/patch-components_crash_content_browser_BUILD.gn21
-rw-r--r--www/iridium/files/patch-components_drive_drive__api__util.cc14
-rw-r--r--www/iridium/files/patch-components_feedback_anonymizer__tool.cc14
-rw-r--r--www/iridium/files/patch-components_flags__ui_flags__state.cc11
-rw-r--r--www/iridium/files/patch-components_gcm__driver_gcm__client.h10
-rw-r--r--www/iridium/files/patch-components_gcm__driver_gcm__client__impl.cc12
-rw-r--r--www/iridium/files/patch-components_json__schema_json__schema__validator.cc14
-rw-r--r--www/iridium/files/patch-components_keyed__service_core_dependency__graph__unittest.cc14
-rw-r--r--www/iridium/files/patch-components_metrics_BUILD.gn34
-rw-r--r--www/iridium/files/patch-components_metrics_drive__metrics__provider__linux.cc16
-rw-r--r--www/iridium/files/patch-components_metrics_system__memory__stats__recorder__linux.cc18
-rw-r--r--www/iridium/files/patch-components_neterror_resources_neterror.js11
-rw-r--r--www/iridium/files/patch-components_os__crypt_os__crypt.h20
-rw-r--r--www/iridium/files/patch-components_password__manager_core_browser_import_csv__reader.cc14
-rw-r--r--www/iridium/files/patch-components_plugins_renderer_BUILD.gn17
-rw-r--r--www/iridium/files/patch-components_plugins_renderer_plugin__placeholder.cc14
-rw-r--r--www/iridium/files/patch-components_policy_BUILD.gn19
-rw-r--r--www/iridium/files/patch-components_policy_core_common_schema.cc14
-rw-r--r--www/iridium/files/patch-components_policy_resources_policy__templates.json47
-rw-r--r--www/iridium/files/patch-components_policy_tools_generate__policy__source.py11
-rw-r--r--www/iridium/files/patch-components_storage__monitor_BUILD.gn24
-rw-r--r--www/iridium/files/patch-components_storage__monitor_storage__monitor.cc18
-rw-r--r--www/iridium/files/patch-components_storage__monitor_storage__monitor__freebsd.cc104
-rw-r--r--www/iridium/files/patch-components_storage__monitor_storage__monitor__freebsd.h48
-rw-r--r--www/iridium/files/patch-components_sync_base_get__session__name.cc20
-rw-r--r--www/iridium/files/patch-components_sync_base_get__session__name__linux.cc14
-rw-r--r--www/iridium/files/patch-components_tracing_child_child__memory__dump__manager__delegate__impl.cc11
-rw-r--r--www/iridium/files/patch-components_tracing_common_process__metrics__memory__dump__provider.cc81
-rw-r--r--www/iridium/files/patch-components_tracing_common_process__metrics__memory__dump__provider.h20
-rw-r--r--www/iridium/files/patch-components_update__client_update__query__params.cc11
-rw-r--r--www/iridium/files/patch-components_url__matcher_regex__set__matcher.cc16
-rw-r--r--www/iridium/files/patch-components_url__matcher_url__matcher__factory.cc14
-rw-r--r--www/iridium/files/patch-components_variations_proto_study.proto10
-rw-r--r--www/iridium/files/patch-components_webcrypto_algorithms_test__helpers.cc14
-rw-r--r--www/iridium/files/patch-content_app_BUILD.gn11
-rw-r--r--www/iridium/files/patch-content_app_content__main__runner.cc42
-rw-r--r--www/iridium/files/patch-content_browser_BUILD.gn64
-rw-r--r--www/iridium/files/patch-content_browser_accessibility_browser__accessibility.h11
-rw-r--r--www/iridium/files/patch-content_browser_accessibility_browser__accessibility__manager.h20
-rw-r--r--www/iridium/files/patch-content_browser_browser__main__loop.cc40
-rw-r--r--www/iridium/files/patch-content_browser_child__process__launcher__helper__linux.cc49
-rw-r--r--www/iridium/files/patch-content_browser_devtools_protocol_color__picker.cc11
-rw-r--r--www/iridium/files/patch-content_browser_download_base__file.cc20
-rw-r--r--www/iridium/files/patch-content_browser_gpu_gpu__data__manager__impl__private.cc45
-rw-r--r--www/iridium/files/patch-content_browser_gpu_gpu__data__manager__impl__private.h11
-rw-r--r--www/iridium/files/patch-content_browser_gpu_gpu__internals__ui.cc29
-rw-r--r--www/iridium/files/patch-content_browser_gpu_gpu__process__host.cc11
-rw-r--r--www/iridium/files/patch-content_browser_media_media__internals.cc11
-rw-r--r--www/iridium/files/patch-content_browser_memory_memory__coordinator__impl.cc15
-rw-r--r--www/iridium/files/patch-content_browser_memory_memory__monitor.cc21
-rw-r--r--www/iridium/files/patch-content_browser_ppapi__plugin__process__host.cc48
-rw-r--r--www/iridium/files/patch-content_browser_renderer__host_media_video__capture__manager.cc20
-rw-r--r--www/iridium/files/patch-content_browser_renderer__host_render__message__filter.cc11
-rw-r--r--www/iridium/files/patch-content_browser_renderer__host_render__message__filter.h11
-rw-r--r--www/iridium/files/patch-content_browser_renderer__host_render__process__host__impl.cc52
-rw-r--r--www/iridium/files/patch-content_browser_renderer__host_render__view__host__impl.cc11
-rw-r--r--www/iridium/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc29
-rw-r--r--www/iridium/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc11
-rw-r--r--www/iridium/files/patch-content_browser_tracing_tracing__controller__impl.cc20
-rw-r--r--www/iridium/files/patch-content_browser_utility__process__host__impl.cc94
-rw-r--r--www/iridium/files/patch-content_child_child__process.cc11
-rw-r--r--www/iridium/files/patch-content_child_child__process.h11
-rw-r--r--www/iridium/files/patch-content_child_child__thread__impl.cc11
-rw-r--r--www/iridium/files/patch-content_child_child__thread__impl.h11
-rw-r--r--www/iridium/files/patch-content_common_BUILD.gn28
-rw-r--r--www/iridium/files/patch-content_common_child__process__messages.h29
-rw-r--r--www/iridium/files/patch-content_common_content__switches__internal.cc11
-rw-r--r--www/iridium/files/patch-content_common_sandbox__linux_sandbox__debug__handling__linux.cc29
-rw-r--r--www/iridium/files/patch-content_common_set__process__title__linux.cc19
-rw-r--r--www/iridium/files/patch-content_common_set__process__title__linux.h20
-rw-r--r--www/iridium/files/patch-content_common_view__messages.h11
-rw-r--r--www/iridium/files/patch-content_gpu_BUILD.gn10
-rw-r--r--www/iridium/files/patch-content_gpu_gpu__child__thread.cc18
-rw-r--r--www/iridium/files/patch-content_gpu_gpu__main.cc29
-rw-r--r--www/iridium/files/patch-content_gpu_in__process__gpu__thread.cc11
-rw-r--r--www/iridium/files/patch-content_public_common_child__process__host.h20
-rw-r--r--www/iridium/files/patch-content_public_common_content__switches.cc11
-rw-r--r--www/iridium/files/patch-content_public_common_content__switches.h11
-rw-r--r--www/iridium/files/patch-content_public_common_renderer__preferences.h11
-rw-r--r--www/iridium/files/patch-content_public_test_browser__test__base.cc13
-rw-r--r--www/iridium/files/patch-content_renderer_media_webrtc_processed__local__audio__source.cc13
-rw-r--r--www/iridium/files/patch-content_renderer_render__thread__impl.cc34
-rw-r--r--www/iridium/files/patch-content_renderer_renderer__blink__platform__impl.cc56
-rw-r--r--www/iridium/files/patch-content_renderer_renderer__blink__platform__impl.h11
-rw-r--r--www/iridium/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc19
-rw-r--r--www/iridium/files/patch-content_renderer_webscrollbarbehavior__impl__aura.cc20
-rw-r--r--www/iridium/files/patch-content_shell_BUILD.gn38
-rw-r--r--www/iridium/files/patch-content_shell_browser_shell__browser__context.cc20
-rw-r--r--www/iridium/files/patch-content_shell_browser_shell__browser__main__parts.cc20
-rw-r--r--www/iridium/files/patch-content_test_BUILD.gn38
-rw-r--r--www/iridium/files/patch-crypto_nss__util.cc24
-rw-r--r--www/iridium/files/patch-device_BUILD.gn11
-rw-r--r--www/iridium/files/patch-device_battery_BUILD.gn11
-rw-r--r--www/iridium/files/patch-device_bluetooth_BUILD.gn11
-rw-r--r--www/iridium/files/patch-device_gamepad_gamepad__provider.cc11
-rw-r--r--www/iridium/files/patch-device_geolocation_BUILD.gn11
-rw-r--r--www/iridium/files/patch-device_geolocation_location__arbitrator.cc11
-rw-r--r--www/iridium/files/patch-device_hid_BUILD.gn16
-rw-r--r--www/iridium/files/patch-device_media__transfer__protocol_media__transfer__protocol__daemon__client.h11
-rw-r--r--www/iridium/files/patch-device_media__transfer__protocol_media__transfer__protocol__manager.h11
-rw-r--r--www/iridium/files/patch-device_sensors_data__fetcher__shared__memory.h11
-rw-r--r--www/iridium/files/patch-device_serial_BUILD.gn24
-rw-r--r--www/iridium/files/patch-device_serial_serial__io__handler__posix.cc11
-rw-r--r--www/iridium/files/patch-device_usb_usb__context.cc26
-rw-r--r--www/iridium/files/patch-device_usb_usb__context__unittest.cc14
-rw-r--r--www/iridium/files/patch-device_usb_usb__device__handle__impl.cc15
-rw-r--r--www/iridium/files/patch-device_usb_usb__device__handle__impl.h15
-rw-r--r--www/iridium/files/patch-device_usb_usb__device__impl.cc14
-rw-r--r--www/iridium/files/patch-device_usb_usb__error.cc14
-rw-r--r--www/iridium/files/patch-device_usb_usb__service__impl.cc58
-rw-r--r--www/iridium/files/patch-device_usb_usb__service__impl.h40
-rw-r--r--www/iridium/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc14
-rw-r--r--www/iridium/files/patch-extensions_browser_api_networking__private_networking__private__event__router__factory.cc17
-rw-r--r--www/iridium/files/patch-extensions_browser_api_serial_serial__api.cc16
-rw-r--r--www/iridium/files/patch-extensions_browser_api_web__request_form__data__parser.cc14
-rw-r--r--www/iridium/files/patch-extensions_common_image__util.cc14
-rw-r--r--www/iridium/files/patch-extensions_common_stack__frame.cc14
-rw-r--r--www/iridium/files/patch-gpu_BUILD.gn11
-rw-r--r--www/iridium/files/patch-gpu_command__buffer_service_program__manager.cc14
-rw-r--r--www/iridium/files/patch-gpu_config_BUILD.gn27
-rw-r--r--www/iridium/files/patch-gpu_config_gpu__control__list.cc32
-rw-r--r--www/iridium/files/patch-gpu_config_gpu__control__list__unittest.cc12
-rw-r--r--www/iridium/files/patch-gpu_config_gpu__info__collector.cc13
-rw-r--r--www/iridium/files/patch-gpu_config_gpu__test__config.cc30
-rw-r--r--www/iridium/files/patch-gpu_gles2__conform__support_BUILD.gn20
-rw-r--r--www/iridium/files/patch-gpu_gles2__conform__support_native_BUILD.gn11
-rw-r--r--www/iridium/files/patch-gpu_ipc_client_BUILD.gn10
-rw-r--r--www/iridium/files/patch-gpu_ipc_service_BUILD.gn16
-rw-r--r--www/iridium/files/patch-gpu_ipc_service_gpu__init.cc38
-rw-r--r--www/iridium/files/patch-gpu_tools_compositor__model__bench_BUILD.gn11
-rw-r--r--www/iridium/files/patch-gpu_vulkan_BUILD.gn11
-rw-r--r--www/iridium/files/patch-ipc_ipc__channel.h11
-rw-r--r--www/iridium/files/patch-ipc_ipc__message__utils.cc11
-rw-r--r--www/iridium/files/patch-ipc_ipc__message__utils.h11
-rw-r--r--www/iridium/files/patch-iridium_trknotify.cpp20
-rw-r--r--www/iridium/files/patch-mash_package_mash__packaged__service.cc20
-rw-r--r--www/iridium/files/patch-media__audio__alsa__audio_manager_alsa.cc54
-rw-r--r--www/iridium/files/patch-media_audio_BUILD.gn25
-rw-r--r--www/iridium/files/patch-media_audio_audio__manager.cc29
-rw-r--r--www/iridium/files/patch-media_audio_audio__manager.h11
-rw-r--r--www/iridium/files/patch-media_base_BUILD.gn20
-rw-r--r--www/iridium/files/patch-media_base_audio__latency.cc11
-rw-r--r--www/iridium/files/patch-media_base_video__frame.cc47
-rw-r--r--www/iridium/files/patch-media_base_video__frame.h38
-rw-r--r--www/iridium/files/patch-media_capture_BUILD.gn19
-rw-r--r--www/iridium/files/patch-media_capture_video_fake__video__capture__device__factory.cc11
-rw-r--r--www/iridium/files/patch-media_capture_video_file__video__capture__device__factory.cc11
-rw-r--r--www/iridium/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc26
-rw-r--r--www/iridium/files/patch-media_capture_video_linux_video__capture__device__linux.cc62
-rw-r--r--www/iridium/files/patch-media_capture_video_video__capture__device__client.cc11
-rw-r--r--www/iridium/files/patch-media_capture_video_video__capture__device__factory.cc30
-rw-r--r--www/iridium/files/patch-media_cast_BUILD.gn29
-rw-r--r--www/iridium/files/patch-media_cdm_ppapi_ppapi__cdm__adapter.gni20
-rw-r--r--www/iridium/files/patch-media_ffmpeg_ffmpeg__common.h19
-rw-r--r--www/iridium/files/patch-media_filters_ffmpeg__demuxer.cc27
-rw-r--r--www/iridium/files/patch-media_filters_vp9__parser.h10
-rw-r--r--www/iridium/files/patch-media_formats_common_offset__byte__queue.cc20
-rw-r--r--www/iridium/files/patch-media_formats_common_offset__byte__queue.h22
-rw-r--r--www/iridium/files/patch-media_formats_mp2t_es__parser__adts.cc26
-rw-r--r--www/iridium/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc26
-rw-r--r--www/iridium/files/patch-mojo_BUILD.gn11
-rw-r--r--www/iridium/files/patch-mojo_edk_test_BUILD.gn20
-rw-r--r--www/iridium/files/patch-native__client__sdk_src_BUILD.gn20
-rw-r--r--www/iridium/files/patch-net_BUILD.gn84
-rw-r--r--www/iridium/files/patch-net_base_address__tracker__linux.h28
-rw-r--r--www/iridium/files/patch-net_base_address__tracker__linux__unittest.cc14
-rw-r--r--www/iridium/files/patch-net_base_mime__util__unittest.cc11
-rw-r--r--www/iridium/files/patch-net_base_network__change__notifier.cc10
-rw-r--r--www/iridium/files/patch-net_base_network__interfaces__posix.cc20
-rw-r--r--www/iridium/files/patch-net_disk__cache_blockfile_disk__format.h12
-rw-r--r--www/iridium/files/patch-net_dns_address__sorter__posix.cc10
-rw-r--r--www/iridium/files/patch-net_dns_dns__config__service__posix__unittest.cc11
-rw-r--r--www/iridium/files/patch-net_dns_dns__reloader.cc13
-rw-r--r--www/iridium/files/patch-net_dns_dns__util.cc11
-rw-r--r--www/iridium/files/patch-net_dns_host__resolver__proc.cc11
-rw-r--r--www/iridium/files/patch-net_http_http__auth__gssapi__posix.cc13
-rw-r--r--www/iridium/files/patch-net_http_http__network__session.cc12
-rw-r--r--www/iridium/files/patch-net_proxy_proxy__config__service__linux.cc145
-rw-r--r--www/iridium/files/patch-net_proxy_proxy__service.cc20
-rw-r--r--www/iridium/files/patch-net_quic_platform_impl_quic__ip__address__impl.cc10
-rw-r--r--www/iridium/files/patch-net_socket_socks5__client__socket.cc13
-rw-r--r--www/iridium/files/patch-net_socket_udp__socket__posix.cc29
-rw-r--r--www/iridium/files/patch-net_tools_cert__verify__tool_verify__using__path__builder.cc20
-rw-r--r--www/iridium/files/patch-net_tools_get__server__time_get__server__time.cc20
-rw-r--r--www/iridium/files/patch-net_url__request_url__request__context__builder.cc11
-rw-r--r--www/iridium/files/patch-pdf_pdfium_pdfium__engine.cc65
-rw-r--r--www/iridium/files/patch-ppapi_proxy_file__io__resource.cc48
-rw-r--r--www/iridium/files/patch-ppapi_shared__impl_private_net__address__private__impl.cc16
-rw-r--r--www/iridium/files/patch-ppapi_tests_extensions_BUILD.gn11
-rw-r--r--www/iridium/files/patch-printing_BUILD.gn20
-rw-r--r--www/iridium/files/patch-printing_cups__config__helper.py11
-rw-r--r--www/iridium/files/patch-remoting_host_BUILD.gn47
-rw-r--r--www/iridium/files/patch-sandbox_features.gni10
-rw-r--r--www/iridium/files/patch-sandbox_linux_BUILD.gn11
-rw-r--r--www/iridium/files/patch-sdch_BUILD.gn20
-rw-r--r--www/iridium/files/patch-services_catalog_public_cpp_manifest__parsing__util.cc21
-rw-r--r--www/iridium/files/patch-services_catalog_store.cc9
-rw-r--r--www/iridium/files/patch-services_catalog_store.h10
-rw-r--r--www/iridium/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc11
-rw-r--r--www/iridium/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc22
-rw-r--r--www/iridium/files/patch-services_service__manager_public_cpp_standalone__service_BUILD.gn11
-rw-r--r--www/iridium/files/patch-services_service__manager_public_cpp_standalone__service_standalone__service.cc11
-rw-r--r--www/iridium/files/patch-services_service__manager_runner_host_BUILD.gn11
-rw-r--r--www/iridium/files/patch-services_service__manager_standalone_context.cc11
-rw-r--r--www/iridium/files/patch-services_ui_BUILD.gn18
-rw-r--r--www/iridium/files/patch-services_ui_gpu_gpu__main.cc11
-rw-r--r--www/iridium/files/patch-services_ui_ime_BUILD.gn10
-rw-r--r--www/iridium/files/patch-skia_BUILD.gn38
-rw-r--r--www/iridium/files/patch-skia_ext_SkMemory__new__handler.cpp20
-rw-r--r--www/iridium/files/patch-storage_browser_quota_quota__settings.cc11
-rw-r--r--www/iridium/files/patch-testing_gtest_src_gtest.cc22
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_bindings_core_v8_V8ScriptRunner.cpp11
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_core_layout_BUILD.gn11
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontCache.cpp14
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontCache.h20
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontPlatformData.cpp47
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontPlatformData.h32
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_SimpleFontData.cpp29
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_skia_FontCacheSkia.cpp20
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_platform_heap_GCInfo.cpp11
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_platform_heap_StackFrameDepth.cpp11
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_web_PopupMenuImpl.cpp11
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_wtf_Assertions.cpp20
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_wtf_Atomics.h11
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_wtf_BUILD.gn13
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_wtf_ByteSwap.h24
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_wtf_ContainerAnnotations.h11
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_wtf_StackUtil.cpp13
-rw-r--r--www/iridium/files/patch-third__party_WebKit_Source_wtf_ThreadingPthreads.cpp29
-rw-r--r--www/iridium/files/patch-third__party_angle_BUILD.gn46
-rw-r--r--www/iridium/files/patch-third__party_angle_gni_angle.gni11
-rw-r--r--www/iridium/files/patch-third__party_angle_src_tests_BUILD.gn65
-rw-r--r--www/iridium/files/patch-third__party_boringssl_BUILD.gn29
-rw-r--r--www/iridium/files/patch-third__party_boringssl_src_crypto_ex__data.c13
-rw-r--r--www/iridium/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h11
-rw-r--r--www/iridium/files/patch-third__party_expat_BUILD.gn11
-rw-r--r--www/iridium/files/patch-third__party_ffmpeg_BUILD.gn18
-rw-r--r--www/iridium/files/patch-third__party_ffmpeg_ffmpeg__generated.gni285
-rw-r--r--www/iridium/files/patch-third__party_ffmpeg_libavutil_mem.c12
-rw-r--r--www/iridium/files/patch-third__party_fontconfig_BUILD.gn11
-rw-r--r--www/iridium/files/patch-third__party_glslang_BUILD.gn20
-rw-r--r--www/iridium/files/patch-third__party_harfbuzz-ng_BUILD.gn20
-rw-r--r--www/iridium/files/patch-third__party_leveldatabase_env__chromium.cc14
-rw-r--r--www/iridium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h11
-rw-r--r--www/iridium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h11
-rw-r--r--www/iridium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h19
-rw-r--r--www/iridium/files/patch-third__party_libusb_BUILD.gn256
-rw-r--r--www/iridium/files/patch-third__party_libxml_BUILD.gn11
-rw-r--r--www/iridium/files/patch-third__party_libxslt_BUILD.gn11
-rw-r--r--www/iridium/files/patch-third__party_libyuv_include_libyuv_row.h37
-rw-r--r--www/iridium/files/patch-third__party_mesa_BUILD.gn23
-rw-r--r--www/iridium/files/patch-third__party_minigbm_BUILD.gn11
-rw-r--r--www/iridium/files/patch-third__party_node_node.py10
-rw-r--r--www/iridium/files/patch-third__party_opus_BUILD.gn11
-rw-r--r--www/iridium/files/patch-third__party_ots_include_opentype-sanitiser.h10
-rw-r--r--www/iridium/files/patch-third__party_pdfium_BUILD.gn11
-rw-r--r--www/iridium/files/patch-third__party_pdfium_core_fxcrt_fx__system.h11
-rw-r--r--www/iridium/files/patch-third__party_pdfium_fpdfsdk_javascript_JS__Value.cpp28
-rw-r--r--www/iridium/files/patch-third__party_pdfium_fpdfsdk_javascript_PublicMethods.cpp106
-rw-r--r--www/iridium/files/patch-third__party_pdfium_skia_BUILD.gn29
-rw-r--r--www/iridium/files/patch-third__party_pdfium_third__party_base_logging.h11
-rw-r--r--www/iridium/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h11
-rw-r--r--www/iridium/files/patch-third__party_sqlite_BUILD.gn47
-rw-r--r--www/iridium/files/patch-third__party_usrsctp_BUILD.gn15
-rw-r--r--www/iridium/files/patch-third__party_webrtc_BUILD.gn12
-rw-r--r--www/iridium/files/patch-third__party_webrtc_base_BUILD.gn18
-rw-r--r--www/iridium/files/patch-third__party_webrtc_base_httpcommon.cc11
-rw-r--r--www/iridium/files/patch-third__party_webrtc_base_ifaddrs__converter.h11
-rw-r--r--www/iridium/files/patch-third__party_webrtc_base_ipaddress.h13
-rw-r--r--www/iridium/files/patch-third__party_webrtc_base_network.cc29
-rw-r--r--www/iridium/files/patch-third__party_webrtc_base_network.h13
-rw-r--r--www/iridium/files/patch-third__party_webrtc_base_physicalsocketserver.cc45
-rw-r--r--www/iridium/files/patch-third__party_webrtc_base_platform__thread.cc42
-rw-r--r--www/iridium/files/patch-third__party_webrtc_base_stringutils.h17
-rw-r--r--www/iridium/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn20
-rw-r--r--www/iridium/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc10
-rw-r--r--www/iridium/files/patch-third__party_webrtc_modules_video__coding_BUILD.gn29
-rw-r--r--www/iridium/files/patch-third__party_webrtc_system__wrappers_BUILD.gn20
-rw-r--r--www/iridium/files/patch-third__party_webrtc_system__wrappers_source_atomic32__non__darwin__unix.cc11
-rw-r--r--www/iridium/files/patch-third__party_widevine_cdm_BUILD.gn29
-rw-r--r--www/iridium/files/patch-third__party_yasm_BUILD.gn16
-rw-r--r--www/iridium/files/patch-third__party_zlib_BUILD.gn11
-rw-r--r--www/iridium/files/patch-tools_battor__agent_BUILD.gn11
-rw-r--r--www/iridium/files/patch-tools_gn_args.cc11
-rw-r--r--www/iridium/files/patch-tools_gn_bootstrap_bootstrap.py63
-rw-r--r--www/iridium/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn11
-rw-r--r--www/iridium/files/patch-tools_variations_fieldtrial__to__struct.py11
-rw-r--r--www/iridium/files/patch-ui_accessibility_platform_ax__platform__node.h11
-rw-r--r--www/iridium/files/patch-ui_app__list_app__list__constants.cc11
-rw-r--r--www/iridium/files/patch-ui_app__list_app__list__constants.h13
-rw-r--r--www/iridium/files/patch-ui_app__list_views_app__list__item__view.cc11
-rw-r--r--www/iridium/files/patch-ui_aura_BUILD.gn11
-rw-r--r--www/iridium/files/patch-ui_base_BUILD.gn61
-rw-r--r--www/iridium/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc20
-rw-r--r--www/iridium/files/patch-ui_base_ime_BUILD.gn20
-rw-r--r--www/iridium/files/patch-ui_base_ime_ime__engine__handler__interface.h11
-rw-r--r--www/iridium/files/patch-ui_base_ime_input__method__factory.cc22
-rw-r--r--www/iridium/files/patch-ui_base_ime_input__method__initializer.cc37
-rw-r--r--www/iridium/files/patch-ui_base_resource_resource__bundle.cc20
-rw-r--r--www/iridium/files/patch-ui_base_ui__features.gni8
-rw-r--r--www/iridium/files/patch-ui_base_webui_web__ui__util.cc11
-rw-r--r--www/iridium/files/patch-ui_compositor_BUILD.gn11
-rw-r--r--www/iridium/files/patch-ui_events_devices_x11_device__data__manager__x11.cc19
-rw-r--r--www/iridium/files/patch-ui_events_event__switches.cc11
-rw-r--r--www/iridium/files/patch-ui_events_event__switches.h11
-rw-r--r--www/iridium/files/patch-ui_events_keycodes_dom_keycode__converter.cc11
-rw-r--r--www/iridium/files/patch-ui_gfx_BUILD.gn20
-rw-r--r--www/iridium/files/patch-ui_gfx_canvas__skia.cc11
-rw-r--r--www/iridium/files/patch-ui_gfx_font__fallback__linux.cc13
-rw-r--r--www/iridium/files/patch-ui_gfx_font__list.cc11
-rw-r--r--www/iridium/files/patch-ui_gfx_font__render__params.h18
-rw-r--r--www/iridium/files/patch-ui_gfx_render__text.cc46
-rw-r--r--www/iridium/files/patch-ui_gl_BUILD.gn20
-rw-r--r--www/iridium/files/patch-ui_gl_sync__control__vsync__provider.cc38
-rw-r--r--www/iridium/files/patch-ui_gl_sync__control__vsync__provider.h20
-rw-r--r--www/iridium/files/patch-ui_message__center_message__center__style.h11
-rw-r--r--www/iridium/files/patch-ui_message__center_views_message__center__button__bar.cc47
-rw-r--r--www/iridium/files/patch-ui_message__center_views_message__center__button__bar.h11
-rw-r--r--www/iridium/files/patch-ui_message__center_views_message__view__factory.cc11
-rw-r--r--www/iridium/files/patch-ui_message__center_views_toast__contents__view.cc11
-rw-r--r--www/iridium/files/patch-ui_resources_ui__resources.grd11
-rw-r--r--www/iridium/files/patch-ui_views_BUILD.gn20
-rw-r--r--www/iridium/files/patch-ui_views_accessibility_native__view__accessibility.h11
-rw-r--r--www/iridium/files/patch-ui_views_bubble_bubble__dialog__delegate.cc11
-rw-r--r--www/iridium/files/patch-ui_views_controls_label.cc20
-rw-r--r--www/iridium/files/patch-ui_views_controls_textfield_textfield.cc73
-rw-r--r--www/iridium/files/patch-ui_views_controls_webview_BUILD.gn11
-rw-r--r--www/iridium/files/patch-ui_views_corewm_tooltip__aura.cc11
-rw-r--r--www/iridium/files/patch-ui_views_examples_widget__example.cc11
-rw-r--r--www/iridium/files/patch-ui_views_mus_BUILD.gn11
-rw-r--r--www/iridium/files/patch-ui_views_mus_aura__init.cc29
-rw-r--r--www/iridium/files/patch-ui_views_mus_aura__init.h11
-rw-r--r--www/iridium/files/patch-ui_views_selection__controller.cc11
-rw-r--r--www/iridium/files/patch-ui_views_style_platform__style.cc11
-rw-r--r--www/iridium/files/patch-ui_views_views__delegate.cc11
-rw-r--r--www/iridium/files/patch-ui_views_views__delegate.h11
-rw-r--r--www/iridium/files/patch-ui_views_views__switches.cc11
-rw-r--r--www/iridium/files/patch-ui_views_window_custom__frame__view.cc11
-rw-r--r--www/iridium/files/patch-ui_views_window_dialog__delegate.cc11
-rw-r--r--www/iridium/files/patch-ui_webui_resources_js_cr.js14
-rw-r--r--www/iridium/files/patch-ui_webui_resources_js_icon.js11
-rw-r--r--www/iridium/files/patch-v8_BUILD.gn32
-rw-r--r--www/iridium/files/patch-v8_src_base_platform_platform-posix.cc26
-rw-r--r--www/iridium/files/patch-v8_src_globals.h14
-rw-r--r--www/iridium/pkg-descr7
-rw-r--r--www/iridium/pkg-message9
-rw-r--r--www/iridium/pkg-plist232
571 files changed, 13345 insertions, 0 deletions
diff --git a/www/Makefile b/www/Makefile
index fc60486c7b2b..bdd7fa042a4e 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -323,6 +323,7 @@
SUBDIR += imgsizer
SUBDIR += impresscms
SUBDIR += interchange
+ SUBDIR += iridium
SUBDIR += itop
SUBDIR += iwebcal
SUBDIR += jdresolve
diff --git a/www/iridium/Makefile b/www/iridium/Makefile
new file mode 100644
index 000000000000..dedc1a2c7ff8
--- /dev/null
+++ b/www/iridium/Makefile
@@ -0,0 +1,260 @@
+# Created by: Carlos J. Puga Medina <cpm@FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME= iridium
+PORTVERSION= 58.0
+CATEGORIES= www
+MASTER_SITES= http://downloads.iridiumbrowser.de/source/
+PKGNAMESUFFIX= -browser
+DISTNAME= ${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION}
+
+MAINTAINER= chromium@FreeBSD.org
+COMMENT= Iridium browser
+
+LICENSE= BSD3CLAUSE LGPL21 MPL
+LICENSE_COMB= multi
+
+BUILD_DEPENDS= gperf:devel/gperf \
+ clang39:devel/llvm39 \
+ yasm:devel/yasm \
+ python:lang/python \
+ ffmpeg>=3.2.2,1:multimedia/ffmpeg \
+ bash:shells/bash \
+ flock:sysutils/flock \
+ node:www/node \
+ ${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat \
+ ${LOCALBASE}/share/usbids/usb.ids:misc/usbids \
+ ${PYTHON_PKGNAMEPREFIX}Jinja2>0:devel/py-Jinja2 \
+ ${PYTHON_PKGNAMEPREFIX}ply>0:devel/py-ply \
+ ${PYTHON_PKGNAMEPREFIX}html5lib>0:www/py-html5lib
+
+LIB_DEPENDS= libspeechd.so:accessibility/speech-dispatcher \
+ libsnappy.so:archivers/snappy \
+ libFLAC.so:audio/flac \
+ libspeex.so:audio/speex \
+ libdbus-1.so:devel/dbus \
+ libdbus-glib-1.so:devel/dbus-glib \
+ 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 \
+ libavcodec.so:multimedia/ffmpeg \
+ libcups.so:print/cups \
+ libfreetype.so:print/freetype2 \
+ libharfbuzz.so:print/harfbuzz \
+ libharfbuzz-icu.so:print/harfbuzz-icu \
+ libgcrypt.so:security/libgcrypt \
+ libgnome-keyring.so:security/libgnome-keyring \
+ libnss3.so:security/nss \
+ libexpat.so:textproc/expat2 \
+ libxml2.so:textproc/libxml2 \
+ libfontconfig.so:x11-fonts/fontconfig
+
+RUN_DEPENDS= xdg-open:devel/xdg-utils \
+ droid-fonts-ttf>0:x11-fonts/droid-fonts-ttf
+
+ONLY_FOR_ARCHS= i386 amd64
+USES= compiler bison cpe desktop-file-utils execinfo jpeg \
+ ninja perl5 pkgconfig python:2,build shebangfix tar:xz
+
+CPE_VENDOR= google
+CPE_PRODUCT= chrome
+USE_PERL5= build
+USE_XORG= scrnsaverproto x11 xcb xcomposite xcursor xext xdamage xfixes xi \
+ xproto xrandr xrender xscrnsaver xtst
+USE_GNOME= atk glib20 gtk20 gtk30 dconf libxslt libxml2
+MAKE_ARGS= -C out/${BUILDTYPE}
+ALL_TARGET= chrome
+INSTALLS_ICONS= yes
+
+# 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+= is_clang=true \
+ clang_use_chrome_plugins=false \
+ enable_media_router=true \
+ enable_nacl=false \
+ enable_one_click_signin=true \
+ enable_remoting=false \
+ enable_webrtc=false \
+ fieldtrial_testing_like_official_build=true \
+ toolkit_views=true \
+ use_allocator="none" \
+ use_aura=true \
+ use_cups=true \
+ use_experimental_allocator_shim=false \
+ treat_warnings_as_errors=false \
+ use_sysroot=false \
+ use_system_libjpeg=true \
+ use_system_sqlite=false # chrome has additional patches
+# TODO: investigate building with these options:
+# use_system_icu use_system_harfbuzz use_system_minigbm
+GN_BOOTSTRAP_FLAGS= --no-clean --no-rebuild
+
+# FreeBSD Chromium Api Key
+# Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys .
+# Note: these are for FreeBSD use ONLY. For your own distribution,
+# please get your own set of keys.
+GN_ARGS+= google_api_key="AIzaSyBsp9n41JLW8jCokwn7vhoaMejDFRd1mp8" \
+ google_default_client_id="996322985003.apps.googleusercontent.com" \
+ google_default_client_secret="IR1za9-1VK0zZ0f_O8MVFicn"
+
+SUB_FILES= iridium-browser.desktop iridium
+SUB_LIST+= COMMENT="${COMMENT}"
+
+OPTIONS_DEFINE= CODECS DEBUG GCONF KERBEROS
+CODECS_DESC= Compile and enable patented codecs like H.264
+OPTIONS_GROUP= AUDIO
+OPTIONS_GROUP_AUDIO= ALSA PULSEAUDIO
+
+OPTIONS_DEFAULT= ALSA CODECS GCONF KERBEROS
+OPTIONS_SUB= yes
+
+GCONF_USE= GNOME=gconf2
+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
+PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
+
+.include <bsd.port.options.mk>
+
+.if ${PORT_OPTIONS:MALSA}
+GN_ARGS+= use_alsa=true
+.else
+GN_ARGS+= use_alsa=false
+.endif
+
+.if ${PORT_OPTIONS:MCODECS}
+GN_ARGS+= ffmpeg_branding="Chrome"
+GN_ARGS+= proprietary_codecs=true
+GN_ARGS+= enable_hevc_demuxing=true
+.else
+GN_ARGS+= ffmpeg_branding="Chromium"
+GN_ARGS+= proprietary_codecs=false
+GN_ARGS+= enable_hevc_demuxing=false
+.endif
+
+DEBUG_MAKE_ENV= V=1
+.if ${PORT_OPTIONS:MDEBUG}
+BUILDTYPE= Debug
+GN_ARGS+= is_debug=true
+GN_BOOTSTRAP_FLAGS+= --debug
+#GN_ARGS+= is_component_build=true
+.else
+BUILDTYPE= Release
+.if ${ARCH} == amd64
+GN_ARGS+= use_lld=true # harder, better, faster, stronger
+.endif
+GN_ARGS+= is_debug=false
+GN_ARGS+= symbol_level=0
+GN_ARGS+= remove_webcore_debug_symbols=true
+.endif
+
+.if ${PORT_OPTIONS:MGCONF}
+GN_ARGS+= use_gconf=true
+.else
+GN_ARGS+= use_gconf=false
+.endif
+
+.if ${PORT_OPTIONS:MKERBEROS}
+GN_ARGS+= use_kerberos=true
+.else
+GN_ARGS+= use_kerberos=false
+.endif
+
+.if ${PORT_OPTIONS:MPULSEAUDIO}
+GN_ARGS+= use_pulseaudio=true
+.else
+GN_ARGS+= use_pulseaudio=false
+.endif
+
+.include <bsd.port.pre.mk>
+
+CC= clang39
+CXX= clang++39
+#optionally set AR, LD, NM, READELF ?
+
+# 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
+# TODO: move this big extra to small ones
+EXTRA_PATCHES+= ${FILESDIR}/extra-patch-clang
+
+# Work around base r261801
+.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1100508
+GN_ARGS+= extra_cxxflags="-D_LIBCPP_TRIVIAL_PAIR_COPY_CTOR=1"
+.endif
+
+pre-everything::
+ @${ECHO_MSG}
+ @${ECHO_MSG} "To build Iridium, you should have around 2GB of memory,"
+.if ${PORT_OPTIONS:MDEBUG}
+ @${ECHO_MSG} "lots of free diskspace (~ 40GB)"
+ @${ECHO_MSG} "and no less then 16GB of memory for linking."
+.else
+ @${ECHO_MSG} "and a fair amount of free diskspace (~ 3.7GB)."
+.endif
+ @${ECHO_MSG}
+
+pre-configure:
+ # We used to remove bundled libraries to be sure that iridium uses
+ # system libraries and not shippen ones.
+ # cd ${WRKSRC} && ${PYTHON_CMD} \
+ #./build/linux/unbundle/remove_bundled_libraries.py [list of preserved]
+ cd ${WRKSRC} && ${PYTHON_CMD} \
+ ./build/linux/unbundle/replace_gn_files.py --system-libraries \
+ ffmpeg flac harfbuzz-ng libwebp libxml libxslt snappy yasm || ${FALSE}
+
+do-configure:
+ # GN generator bootstrapping and generating ninja files
+ cd ${WRKSRC} && ${SETENV} 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} ./out/${BUILDTYPE}/gn \
+ gen --args='${GN_ARGS}' out/${BUILDTYPE}
+
+ # Setup nodejs dependency
+ @${MKDIR} ${WRKSRC}/third_party/node/linux/node-linux-x64/bin
+ ${LN} -sf ${LOCALBASE}/bin/node ${WRKSRC}/third_party/node/linux/node-linux-x64/bin/node
+
+do-install:
+ @${MKDIR} ${STAGEDIR}${DATADIR}
+.for t in font_service ui
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${t}.service \
+ ${STAGEDIR}${DATADIR}
+.endfor
+ ${INSTALL_MAN} ${WRKSRC}/out/${BUILDTYPE}/chrome.1 ${STAGEDIR}${MANPREFIX}/man/man1/iridium.1
+.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/iridium.png
+.endfor
+.for p in chrome_100_percent chrome_200_percent headless_lib keyboard_resources \
+ resources mus_app_resources_100 mus_app_resources_200 mus_app_resources_strings \
+ views_mus_resources
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${p}.pak \
+ ${STAGEDIR}${DATADIR}
+.endfor
+.for d in icudtl.dat natives_blob.bin snapshot_blob.bin
+ ${INSTALL_DATA} ${WRKSRC}/out/${BUILDTYPE}/${d} ${STAGEDIR}${DATADIR}
+.endfor
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/chrome \
+ ${STAGEDIR}${DATADIR}/iridium
+ cd ${WRKSRC}/out/${BUILDTYPE} && \
+ ${COPYTREE_SHARE} "locales resources" ${STAGEDIR}${DATADIR}
+ @${MKDIR} ${STAGEDIR}${DESKTOPDIR}
+ ${INSTALL_DATA} ${WRKDIR}/iridium-browser.desktop \
+ ${STAGEDIR}${DESKTOPDIR}
+ ${INSTALL_SCRIPT} ${WRKDIR}/iridium ${STAGEDIR}${PREFIX}/bin
+ ${INSTALL_PROGRAM} ${WRKSRC}/out/${BUILDTYPE}/mksnapshot \
+ ${STAGEDIR}${DATADIR}
+
+.include <bsd.port.post.mk>
diff --git a/www/iridium/distinfo b/www/iridium/distinfo
new file mode 100644
index 000000000000..845958b63719
--- /dev/null
+++ b/www/iridium/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1493328523
+SHA256 (iridium-browser-58.0.tar.xz) = ec59bf66b1d686c85172c7b9dade6bbda10600df25b17f86a1847d29d8bb9d62
+SIZE (iridium-browser-58.0.tar.xz) = 552368772
diff --git a/www/iridium/files/extra-patch-clang b/www/iridium/files/extra-patch-clang
new file mode 100644
index 000000000000..1d9997e05468
--- /dev/null
+++ b/www/iridium/files/extra-patch-clang
@@ -0,0 +1,112 @@
+--- base/strings/safe_sprintf_unittest.cc.orig 2016-10-06 04:02:08.000000000 +0300
++++ base/strings/safe_sprintf_unittest.cc 2016-10-25 21:42:28.951114000 +0300
+@@ -728,6 +728,7 @@
+ }
+
+ TEST(SafeSPrintfTest, EmitNULL) {
++/* Avoid compiler error: http://pastebin.com/1edWUE84
+ char buf[40];
+ #if defined(__GNUC__)
+ #pragma GCC diagnostic push
+@@ -739,6 +740,7 @@
+ EXPECT_EQ("0x0", std::string(buf));
+ EXPECT_EQ(6, SafeSPrintf(buf, "%s", NULL));
+ EXPECT_EQ("<NULL>", std::string(buf));
++*/
+ #if defined(__GCC__)
+ #pragma GCC diagnostic pop
+ #endif
+--- base/threading/thread_local_storage_unittest.cc 2015-04-15 00:18:48.000000000 +0200
++++ base/threading/thread_local_storage_unittest.cc 2015-04-18 21:45:40.000000000 +0200
+@@ -60,7 +60,7 @@
+ void ThreadLocalStorageCleanup(void *value) {
+ int *ptr = reinterpret_cast<int*>(value);
+ // Destructors should never be called with a NULL.
+- ASSERT_NE(reinterpret_cast<int*>(NULL), ptr);
++ ASSERT_NE(static_cast<int*>(NULL), ptr);
+ if (*ptr == kFinalTlsValue)
+ return; // We've been called enough times.
+ ASSERT_LT(kFinalTlsValue, *ptr);
+--- base/tracked_objects_unittest.cc.orig 2015-08-22 15:01:51.000000000 -0400
++++ base/tracked_objects_unittest.cc 2015-09-03 09:20:53.370191000 -0400
+@@ -58,9 +58,9 @@
+ Births* birth = ThreadData::TallyABirthIfActive(location);
+
+ if (ThreadData::status() == ThreadData::DEACTIVATED)
+- EXPECT_EQ(reinterpret_cast<Births*>(NULL), birth);
++ EXPECT_EQ(static_cast<Births*>(NULL), birth);
+ else
+- EXPECT_NE(reinterpret_cast<Births*>(NULL), birth);
++ EXPECT_NE(static_cast<Births*>(NULL), birth);
+ }
+
+ // Helper function to verify the most common test expectations.
+--- media/audio/audio_output_proxy_unittest.cc 2015-04-15 00:18:55.000000000 +0200
++++ media/audio/audio_output_proxy_unittest.cc 2015-04-18 22:02:38.000000000 +0200
+@@ -387,7 +387,7 @@
+ // |stream| is closed at this point. Start() should reopen it again.
+ EXPECT_CALL(manager(), MakeAudioOutputStream(_, _))
+ .Times(2)
+- .WillRepeatedly(Return(reinterpret_cast<AudioOutputStream*>(NULL)));
++ .WillRepeatedly(Return(static_cast<AudioOutputStream*>(NULL)));
+
+ EXPECT_CALL(callback_, OnError(_))
+ .Times(2);
+--- third_party/libjingle_xmpp/task_runner/taskrunner.cc.orig 2017-04-19 19:06:52 UTC
++++ third_party/libjingle_xmpp/task_runner/taskrunner.cc
+@@ -95,7 +95,7 @@ void TaskRunner::InternalRunTasks(bool i
+ std::vector<Task *>::iterator it;
+ it = std::remove(tasks_.begin(),
+ tasks_.end(),
+- reinterpret_cast<Task *>(NULL));
++ static_cast<Task *>(NULL));
+
+ tasks_.erase(it, tasks_.end());
+
+--- third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc 2015-04-15 00:31:48.000000000 +0200
++++ third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc 2015-04-18 22:05:41.000000000 +0200
+@@ -439,7 +439,7 @@
+ }
+
+ CMapTable::CMapFormat0::Builder::Builder(const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat0,
+ cmap_id) {
+ }
+@@ -563,7 +563,7 @@
+ : CMapTable::CMap::Builder(data ? down_cast<WritableFontData*>(
+ data->Slice(offset, data->ReadUShort(
+ offset + Offset::kFormat0Length)))
+- : reinterpret_cast<WritableFontData*>(NULL),
++ : static_cast<WritableFontData*>(NULL),
+ CMapFormat::kFormat2, cmap_id) {
+ // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix.
+ }
+@@ -574,7 +574,7 @@
+ : CMapTable::CMap::Builder(data ? down_cast<ReadableFontData*>(
+ data->Slice(offset, data->ReadUShort(
+ offset + Offset::kFormat0Length)))
+- : reinterpret_cast<ReadableFontData*>(NULL),
++ : static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat2, cmap_id) {
+ // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix.
+ }
+@@ -958,7 +958,7 @@
+ CMapTable::CMapFormat4::Builder::Builder(SegmentList* segments,
+ IntegerList* glyph_id_array,
+ const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat4, cmap_id),
+ segments_(segments->begin(), segments->end()),
+ glyph_id_array_(glyph_id_array->begin(), glyph_id_array->end()) {
+@@ -966,7 +966,7 @@
+ }
+
+ CMapTable::CMapFormat4::Builder::Builder(const CMapId& cmap_id)
+- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
++ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
+ CMapFormat::kFormat4, cmap_id) {
+ }
+
diff --git a/www/iridium/files/iridium-browser.desktop.in b/www/iridium/files/iridium-browser.desktop.in
new file mode 100644
index 000000000000..cb92990ad825
--- /dev/null
+++ b/www/iridium/files/iridium-browser.desktop.in
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Encoding=UTF-8
+Name=Iridium
+Comment=%%COMMENT%%
+Icon=iridium
+Exec=iridium %U
+Categories=Application;Network;WebBrowser;
+MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/ftp;
+StartupNotify=true
diff --git a/www/iridium/files/iridium.in b/www/iridium/files/iridium.in
new file mode 100644
index 000000000000..0237611bb622
--- /dev/null
+++ b/www/iridium/files/iridium.in
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+SYSCTL=kern.ipc.shm_allow_removed
+if [ "`/sbin/sysctl -n $SYSCTL`" = 0 ] ; then
+ cat << EOMSG
+For correct operation, shared memory support has to be enabled
+in Iridium by performing the following command as root :
+
+sysctl $SYSCTL=1
+
+To preserve this setting across reboots, append the following
+to /etc/sysctl.conf :
+
+$SYSCTL=1
+EOMSG
+ exit 1
+fi
+ulimit -c 0
+exec %%PREFIX%%/share/iridium/iridium ${1+"$@"}
diff --git a/www/iridium/files/patch-BUILD.gn b/www/iridium/files/patch-BUILD.gn
new file mode 100644
index 000000000000..7ca8be9b23be
--- /dev/null
+++ b/www/iridium/files/patch-BUILD.gn
@@ -0,0 +1,173 @@
+--- BUILD.gn.orig 2017-04-19 19:06:27 UTC
++++ BUILD.gn
+@@ -220,7 +220,7 @@ group("both_gn_and_gyp") {
+ ]
+ }
+
+- if (!is_ios && !is_android && !is_chromecast) {
++ if (!is_ios && !is_android && !is_bsd && !is_chromecast) {
+ deps += [
+ "//chrome",
+ "//chrome/test:browser_tests",
+@@ -277,7 +277,7 @@ group("both_gn_and_gyp") {
+ ]
+ }
+
+- if (!is_ios) {
++ if (!is_ios && !is_bsd) {
+ # TODO(GYP): Figure out which of these should actually build on iOS,
+ # and whether there should be other targets that are iOS-only and missing.
+ deps += [
+@@ -322,7 +322,7 @@ group("both_gn_and_gyp") {
+ "//ui/touch_selection:ui_touch_selection_unittests",
+ "//url/ipc:url_ipc_unittests",
+ ]
+- } else {
++ } else if (!is_bsd) {
+ deps += [ "//ios:all" ]
+ }
+
+@@ -482,7 +482,7 @@ group("both_gn_and_gyp") {
+ ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ # The following are definitely linux-only.
+ deps += [
+ "//chrome:manpage",
+@@ -505,9 +505,16 @@ group("both_gn_and_gyp") {
+ # TODO(dpranke): add the linux_dump_symbols flag?
+ deps += [ "//chrome:linux_symbols" ]
+ }
++
++ if (is_bsd) {
++ deps -= [
++ "//sandbox/linux:chrome_sandbox",
++ "//sandbox/linux:sandbox_linux_unittests",
++ ]
++ }
+ }
+
+- if (is_ios || is_win || (is_linux && !is_chromeos)) {
++ if (is_ios || is_win || is_bsd || (is_linux && !is_chromeos)) {
+ deps += [
+ "//base:base_i18n_perftests",
+ "//base:base_perftests",
+@@ -578,7 +585,7 @@ group("both_gn_and_gyp") {
+ if (enable_nacl) {
+ deps += [ "//components/nacl/loader:nacl_loader_unittests" ]
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ # TODO(dpranke): Figure out what platforms should actually have this.
+ deps += [ "//components/nacl/loader:nacl_helper" ]
+
+@@ -684,7 +691,7 @@ group("both_gn_and_gyp") {
+ deps +=
+ [ "//chrome/installer/mini_installer:next_version_mini_installer" ]
+ }
+- } else if (!is_android && !is_ios) {
++ } else if (!is_android && !is_ios && !is_bsd) {
+ deps += [ "//breakpad:symupload($host_toolchain)" ]
+ }
+
+@@ -728,7 +735,7 @@ group("gn_only") {
+ deps += [ "//components/proximity_auth:proximity_auth_unittests" ]
+ }
+
+- if (is_win || is_linux) {
++ if (is_win || is_linux || is_bsd) {
+ deps += [
+ "//mash:all",
+ "//media/mojo/services:media_service_unittests",
+@@ -754,7 +761,7 @@ group("gn_only") {
+ }
+ }
+
+- if (is_linux && !is_chromeos && !is_chromecast) {
++ if ((is_linux || is_bsd) && !is_chromeos && !is_chromecast) {
+ # TODO(GYP): Figure out if any of these should be in gn_all
+ # and figure out how cross-platform they are
+ deps += [
+@@ -794,7 +801,7 @@ group("gn_only") {
+ }
+
+ if (target_cpu == "x86" || target_cpu == "x64") {
+- if (!is_android) {
++ if (!is_android && !is_bsd) {
+ deps += [ "//chrome/test:load_library_perf_tests" ]
+ }
+ deps += [
+@@ -802,7 +809,7 @@ group("gn_only") {
+ "//third_party/libjpeg_turbo:simd_asm",
+ ]
+ }
+- if (is_linux && current_toolchain == host_toolchain) {
++ if ((is_linux || is_bsd) && current_toolchain == host_toolchain) {
+ deps += [ "//v8:v8_shell" ]
+ }
+ }
+@@ -812,7 +819,7 @@ group("gn_only") {
+ }
+
+ if ((is_linux && !is_chromeos && !is_chromecast) || (is_win && use_drfuzz) ||
+- (use_libfuzzer && is_mac)) {
++ (use_libfuzzer && is_mac) || is_bsd) {
+ deps += [
+ "//testing/libfuzzer/fuzzers",
+ "//testing/libfuzzer/tests:libfuzzer_tests",
+@@ -844,7 +851,7 @@ group("gn_only") {
+
+ group("gn_mojo_targets") {
+ testonly = true
+- if (is_linux && !is_chromeos) {
++ if ((is_linux || is_bsd) && !is_chromeos) {
+ # TODO(GYP): Figure out if any of these should be in gn_all
+ # and figure out how cross-platform they are
+ deps = [
+@@ -870,7 +877,7 @@ group("gn_visibility") {
+ }
+ }
+
+-if (!is_ios) {
++if (!is_ios || !is_bsd) {
+ # This group includes all of the targets needed to build and test Blink,
+ # including running the layout tests (see below).
+ group("blink_tests") {
+@@ -935,7 +942,7 @@ if (!is_ios) {
+ data_deps += [ "//content/shell:content_shell_crash_service" ]
+ }
+
+- if (!is_win && !is_android) {
++ if (!is_win && !is_android && !is_bsd) {
+ data_deps += [ "//breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
+
+@@ -943,7 +950,7 @@ if (!is_ios) {
+ data_deps += [ "//breakpad:dump_syms($host_toolchain)" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//breakpad:dump_syms($host_toolchain)" ]
+ }
+
+@@ -979,7 +986,7 @@ group("chromium_swarm_tests") {
+ group("chromium_builder_perf") {
+ testonly = true
+
+- if (!is_ios && !is_android && !is_chromecast) {
++ if (!is_ios && !is_android && !is_chromecast && !is_bsd) {
+ data_deps = [
+ "//cc:cc_perftests",
+ "//chrome/test:load_library_perf_tests",
+@@ -1009,7 +1016,7 @@ group("chromium_builder_perf") {
+ "//chrome/installer/mini_installer:mini_installer",
+ "//chrome/test:angle_perftests",
+ ]
+- } else {
++ } else if (!is_bsd) {
+ data_deps += [ "//breakpad:minidump_stackwalk($host_toolchain)" ]
+ }
+ }
diff --git a/www/iridium/files/patch-apps_ui_views_app__window__frame__view.cc b/www/iridium/files/patch-apps_ui_views_app__window__frame__view.cc
new file mode 100644
index 000000000000..debd179f357f
--- /dev/null
+++ b/www/iridium/files/patch-apps_ui_views_app__window__frame__view.cc
@@ -0,0 +1,11 @@
+--- apps/ui/views/app_window_frame_view.cc.orig 2017-04-19 19:06:27 UTC
++++ apps/ui/views/app_window_frame_view.cc
+@@ -132,7 +132,7 @@ gfx::Rect AppWindowFrameView::GetBoundsF
+ gfx::Rect AppWindowFrameView::GetWindowBoundsForClientBounds(
+ const gfx::Rect& client_bounds) const {
+ gfx::Rect window_bounds = client_bounds;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // 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/iridium/files/patch-ash_display_mirror__window__controller.cc b/www/iridium/files/patch-ash_display_mirror__window__controller.cc
new file mode 100644
index 000000000000..b70a8c5891db
--- /dev/null
+++ b/www/iridium/files/patch-ash_display_mirror__window__controller.cc
@@ -0,0 +1,14 @@
+--- ash/display/mirror_window_controller.cc.orig 2017-04-19 19:06:27 UTC
++++ ash/display/mirror_window_controller.cc
+@@ -251,7 +251,11 @@ void MirrorWindowController::UpdateWindo
+ 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/iridium/files/patch-base_BUILD.gn b/www/iridium/files/patch-base_BUILD.gn
new file mode 100644
index 000000000000..58fb5dbc601e
--- /dev/null
+++ b/www/iridium/files/patch-base_BUILD.gn
@@ -0,0 +1,92 @@
+--- base/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ base/BUILD.gn
+@@ -1156,6 +1156,9 @@ component("base") {
+ deps += [ "//base/allocator:tcmalloc" ]
+ } else if (is_linux && use_allocator == "none") {
+ sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ]
++ } else if (is_bsd && use_allocator == "none") {
++ # TODO move the code to "allocator_shim_default_dispatch_to_glibc.cc"
++ sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ]
+ } else if (is_android && use_allocator == "none") {
+ sources += [
+ "allocator/allocator_shim_default_dispatch_to_linker_wrapped_symbols.cc",
+@@ -1171,6 +1174,34 @@ component("base") {
+ }
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "files/file_util_linux.cc",
++ "files/file_path_watcher_linux.cc",
++ "process/process_linux.cc",
++ "process/process_iterator_linux.cc",
++ "process/process_metrics_linux.cc",
++ "process/process_handle_linux.cc",
++ "sys_info_linux.cc",
++ "trace_event/malloc_dump_provider.cc",
++ "trace_event/malloc_dump_provider.h",
++ ]
++ sources += [
++ "files/file_path_watcher_stub.cc",
++ "process/memory_stubs.cc",
++ "process/process_handle_freebsd.cc",
++ "process/process_iterator_freebsd.cc",
++ "process/process_metrics_freebsd.cc",
++ "sys_info_freebsd.cc",
++ ]
++ libs = [
++ "execinfo", # logging.cc
++ "kvm" # process_metrics_freebsd
++ ]
++ }
++
++
++
+ # Allow more direct string conversions on platforms with native utf8
+ # strings
+ if (is_mac || is_ios || is_chromeos || is_chromecast) {
+@@ -1467,7 +1498,7 @@ component("base") {
+ }
+
+ # Linux.
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ if (is_asan || is_lsan || is_msan || is_tsan) {
+ # For llvm-sanitizer.
+ data += [ "//third_party/llvm-build/Release+Asserts/lib/libstdc++.so.6" ]
+@@ -1492,7 +1523,7 @@ component("base") {
+ "//base/third_party/xdg_user_dirs",
+ ]
+ } else {
+- # Non-Linux.
++ # Non-Linux/BSD.
+ sources -= [
+ "nix/mime_util_xdg.cc",
+ "nix/mime_util_xdg.h",
+@@ -1508,6 +1539,13 @@ component("base") {
+ }
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "threading/platform_thread_linux.cc",
++ ]
++ sources += [ "threading/platform_thread_freebsd.cc" ]
++ }
++
+ # iOS
+ if (is_ios) {
+ set_sources_assignment_filter([])
+@@ -2309,6 +2347,12 @@ test("base_unittests") {
+ set_sources_assignment_filter(sources_assignment_filter)
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "debug/proc_maps_linux_unittest.cc",
++ ]
++ }
++
+ if (is_win) {
+ deps += [ "//base:scoped_handle_test_dll" ]
+ if (current_cpu == "x64") {
diff --git a/www/iridium/files/patch-base__trace_event__process_memory_dump.h b/www/iridium/files/patch-base__trace_event__process_memory_dump.h
new file mode 100644
index 000000000000..b92550a3db42
--- /dev/null
+++ b/www/iridium/files/patch-base__trace_event__process_memory_dump.h
@@ -0,0 +1,11 @@
+--- base/trace_event/process_memory_dump.h.orig 2017-04-19 19:06:28 UTC
++++ base/trace_event/process_memory_dump.h
+@@ -24,7 +24,7 @@
+
+ // Define COUNT_RESIDENT_BYTES_SUPPORTED if platform supports counting of the
+ // resident memory.
+-#if (defined(OS_POSIX) && !defined(OS_NACL)) || defined(OS_WIN)
++#if (defined(OS_POSIX) && !defined(OS_NACL) && !defined(OS_BSD)) || defined(OS_WIN)
+ #define COUNT_RESIDENT_BYTES_SUPPORTED
+ #endif
+
diff --git a/www/iridium/files/patch-base_allocator_allocator__shim.cc b/www/iridium/files/patch-base_allocator_allocator__shim.cc
new file mode 100644
index 000000000000..511d90c292b4
--- /dev/null
+++ b/www/iridium/files/patch-base_allocator_allocator__shim.cc
@@ -0,0 +1,11 @@
+--- base/allocator/allocator_shim.cc.orig 2017-04-19 19:06:28 UTC
++++ base/allocator/allocator_shim.cc
+@@ -81,7 +81,7 @@ inline const allocator::AllocatorDispatc
+ // Unfortunately due to that bug NoBarrier_Load() is mistakenly fully
+ // barriered on Linux+Clang, and that causes visible perf regressons.
+ return reinterpret_cast<const allocator::AllocatorDispatch*>(
+-#if defined(OS_LINUX) && defined(__clang__)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(__clang__)
+ *static_cast<const volatile subtle::AtomicWord*>(&g_chain_head)
+ #else
+ subtle::NoBarrier_Load(&g_chain_head)
diff --git a/www/iridium/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc b/www/iridium/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
new file mode 100644
index 000000000000..3c57e6577f92
--- /dev/null
+++ b/www/iridium/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc
@@ -0,0 +1,77 @@
+--- base/allocator/allocator_shim_default_dispatch_to_glibc.cc.orig 2017-04-19 19:06:28 UTC
++++ base/allocator/allocator_shim_default_dispatch_to_glibc.cc
+@@ -3,19 +3,28 @@
+ // found in the LICENSE file.
+
+ #include "base/allocator/allocator_shim.h"
+-
+-#include <malloc.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <malloc_np.h>
+
+ // This translation unit defines a default dispatch for the allocator shim which
+ // routes allocations to libc functions.
+-// The code here is strongly inspired from tcmalloc's libc_override_glibc.h.
++// The code here is strongly inspired from tcmalloc's override_glibc.h.
+
+ extern "C" {
+-void* __libc_malloc(size_t size);
+-void* __libc_calloc(size_t n, size_t size);
+-void* __libc_realloc(void* address, size_t size);
+-void* __libc_memalign(size_t alignment, size_t size);
+-void __libc_free(void* ptr);
++void* __malloc(size_t size);
++void* __calloc(size_t n, size_t size);
++void* __realloc(void* address, size_t size);
++void* __memalign(size_t alignment, size_t size) {
++ void *ret;
++ if (__posix_memalign(&ret, alignment, size) != 0) {
++ return nullptr;
++ } else {
++ return ret;
++ }
++}
++int __posix_memalign(void **ptr, size_t alignment, size_t size);
++void __free(void* ptr);
+ } // extern "C"
+
+ namespace {
+@@ -23,32 +32,32 @@ namespace {
+ using base::allocator::AllocatorDispatch;
+
+ void* GlibcMalloc(const AllocatorDispatch*, size_t size, void* context) {
+- return __libc_malloc(size);
++ return __malloc(size);
+ }
+
+ void* GlibcCalloc(const AllocatorDispatch*,
+ size_t n,
+ size_t size,
+ void* context) {
+- return __libc_calloc(n, size);
++ return __calloc(n, size);
+ }
+
+ void* GlibcRealloc(const AllocatorDispatch*,
+ void* address,
+ size_t size,
+ void* context) {
+- return __libc_realloc(address, size);
++ return __realloc(address, size);
+ }
+
+ void* GlibcMemalign(const AllocatorDispatch*,
+ size_t alignment,
+ size_t size,
+ void* context) {
+- return __libc_memalign(alignment, size);
++ return __memalign(alignment, size);
+ }
+
+ void GlibcFree(const AllocatorDispatch*, void* address, void* context) {
+- __libc_free(address);
++ __free(address);
+ }
+
+ size_t GlibcGetSizeEstimate(const AllocatorDispatch*,
diff --git a/www/iridium/files/patch-base_allocator_allocator__shim__override__libc__symbols.h b/www/iridium/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
new file mode 100644
index 000000000000..ee8a83648df9
--- /dev/null
+++ b/www/iridium/files/patch-base_allocator_allocator__shim__override__libc__symbols.h
@@ -0,0 +1,11 @@
+--- base/allocator/allocator_shim_override_libc_symbols.h.orig 2017-04-19 19:06:28 UTC
++++ base/allocator/allocator_shim_override_libc_symbols.h
+@@ -10,7 +10,7 @@
+ #endif
+ #define BASE_ALLOCATOR_ALLOCATOR_SHIM_OVERRIDE_LIBC_SYMBOLS_H_
+
+-#include <malloc.h>
++#include <stdlib.h>
+
+ #include "base/allocator/allocator_shim_internals.h"
+
diff --git a/www/iridium/files/patch-base_allocator_allocator__shim__unittest.cc b/www/iridium/files/patch-base_allocator_allocator__shim__unittest.cc
new file mode 100644
index 000000000000..a27e4d210171
--- /dev/null
+++ b/www/iridium/files/patch-base_allocator_allocator__shim__unittest.cc
@@ -0,0 +1,36 @@
+--- base/allocator/allocator_shim_unittest.cc.orig 2017-04-19 19:06:28 UTC
++++ base/allocator/allocator_shim_unittest.cc
+@@ -289,7 +289,7 @@ TEST_F(AllocatorShimTest, InterceptLibcS
+ ASSERT_GE(aligned_allocs_intercepted_by_size[61], 1u);
+ #endif // !OS_WIN
+
+-#if !defined(OS_WIN) && !defined(OS_MACOSX)
++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void* memalign_ptr = memalign(128, 53);
+ ASSERT_NE(nullptr, memalign_ptr);
+ ASSERT_EQ(0u, reinterpret_cast<uintptr_t>(memalign_ptr) % 128);
+@@ -302,7 +302,7 @@ TEST_F(AllocatorShimTest, InterceptLibcS
+ ASSERT_GE(aligned_allocs_intercepted_by_alignment[kPageSize], 1u);
+ // pvalloc rounds the size up to the next page.
+ ASSERT_GE(aligned_allocs_intercepted_by_size[kPageSize], 1u);
+-#endif // !OS_WIN && !OS_MACOSX
++#endif // !OS_WIN && !OS_MACOSX && !OS_BSD
+
+ char* realloc_ptr = static_cast<char*>(malloc(10));
+ strcpy(realloc_ptr, "foobar");
+@@ -318,13 +318,13 @@ TEST_F(AllocatorShimTest, InterceptLibcS
+ free(zero_alloc_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(zero_alloc_ptr)], 1u);
+
+-#if !defined(OS_WIN) && !defined(OS_MACOSX)
++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ free(memalign_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(memalign_ptr)], 1u);
+
+ free(pvalloc_ptr);
+ ASSERT_GE(frees_intercepted_by_addr[Hash(pvalloc_ptr)], 1u);
+-#endif // !OS_WIN && !OS_MACOSX
++#endif // !OS_WIN && !OS_MACOSX && !OS_BSD
+
+ #if !defined(OS_WIN)
+ free(posix_memalign_ptr);
diff --git a/www/iridium/files/patch-base_base__paths__posix.cc b/www/iridium/files/patch-base_base__paths__posix.cc
new file mode 100644
index 000000000000..6db3a847061c
--- /dev/null
+++ b/www/iridium/files/patch-base_base__paths__posix.cc
@@ -0,0 +1,20 @@
+--- base/base_paths_posix.cc.orig 2017-04-19 19:06:28 UTC
++++ base/base_paths_posix.cc
+@@ -67,13 +67,13 @@ bool PathProviderPosix(int key, FilePath
+ }
+ *result = FilePath(bin_dir);
+ return true;
+-#elif defined(OS_OPENBSD)
+- // There is currently no way to get the executable path on OpenBSD
++#elif defined(OS_BSD)
++ // There is currently no way to get the executable path on FreeBSD
+ char* cpath;
+- if ((cpath = getenv("CHROME_EXE_PATH")) != NULL)
++ if ((cpath = getenv("IRIDIUM_EXE_PATH")) != NULL)
+ *result = FilePath(cpath);
+ else
+- *result = FilePath("/usr/local/chrome/chrome");
++ *result = FilePath("/usr/local/iridium/iridium");
+ return true;
+ #endif
+ }
diff --git a/www/iridium/files/patch-base_debug_proc__maps__linux.cc b/www/iridium/files/patch-base_debug_proc__maps__linux.cc
new file mode 100644
index 000000000000..9eded9c2f218
--- /dev/null
+++ b/www/iridium/files/patch-base_debug_proc__maps__linux.cc
@@ -0,0 +1,11 @@
+--- base/debug/proc_maps_linux.cc.orig 2017-04-19 19:06:28 UTC
++++ base/debug/proc_maps_linux.cc
+@@ -12,7 +12,7 @@
+ #include "base/strings/string_split.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_ANDROID)
+ #include <inttypes.h>
+ #endif
+
diff --git a/www/iridium/files/patch-base_debug_stack__trace__posix.cc b/www/iridium/files/patch-base_debug_stack__trace__posix.cc
new file mode 100644
index 000000000000..6b2420bb7915
--- /dev/null
+++ b/www/iridium/files/patch-base_debug_stack__trace__posix.cc
@@ -0,0 +1,30 @@
+--- base/debug/stack_trace_posix.cc.orig 2017-04-19 19:06:28 UTC
++++ base/debug/stack_trace_posix.cc
+@@ -34,7 +34,7 @@
+ #include <AvailabilityMacros.h>
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/debug/proc_maps_linux.h"
+ #endif
+
+@@ -575,6 +575,10 @@ class SandboxSymbolizeHelper {
+ // for the modules that are loaded in the current process.
+ // Returns true on success.
+ bool CacheMemoryRegions() {
++#if defined(OS_FREEBSD)
++ // TODO (rene) avoid link error, implement something?
++ return false;
++#else
+ // Reads /proc/self/maps.
+ std::string contents;
+ if (!ReadProcMaps(&contents)) {
+@@ -590,6 +594,7 @@ class SandboxSymbolizeHelper {
+
+ is_initialized_ = true;
+ return true;
++#endif
+ }
+
+ // Opens all object files and caches their file descriptors.
diff --git a/www/iridium/files/patch-base_debug_thread__heap__usage__tracker.cc b/www/iridium/files/patch-base_debug_thread__heap__usage__tracker.cc
new file mode 100644
index 000000000000..3c59be9ba720
--- /dev/null
+++ b/www/iridium/files/patch-base_debug_thread__heap__usage__tracker.cc
@@ -0,0 +1,16 @@
+--- base/debug/thread_heap_usage_tracker.cc.orig 2017-04-19 19:06:28 UTC
++++ base/debug/thread_heap_usage_tracker.cc
+@@ -16,11 +16,13 @@
+ #include "base/threading/thread_local_storage.h"
+ #include "build/build_config.h"
+
++#if !defined(OS_BSD)
+ #if defined(OS_MACOSX) || defined(OS_IOS)
+ #include <malloc/malloc.h>
+ #else
+ #include <malloc.h>
+ #endif
++#endif
+
+ namespace base {
+ namespace debug {
diff --git a/www/iridium/files/patch-base_files_file__path__unittest.cc b/www/iridium/files/patch-base_files_file__path__unittest.cc
new file mode 100644
index 000000000000..167644ac3dd2
--- /dev/null
+++ b/www/iridium/files/patch-base_files_file__path__unittest.cc
@@ -0,0 +1,11 @@
+--- base/files/file_path_unittest.cc.orig 2017-04-19 19:06:28 UTC
++++ base/files/file_path_unittest.cc
+@@ -1133,7 +1133,7 @@ TEST_F(FilePathTest, FromUTF8Unsafe_And_
+ "\xEF\xBC\xA1\xEF\xBC\xA2\xEF\xBC\xA3.txt" },
+ };
+
+-#if !defined(SYSTEM_NATIVE_UTF8) && defined(OS_LINUX)
++#if !defined(SYSTEM_NATIVE_UTF8) && (defined(OS_LINUX) || defined(OS_BSD))
+ ScopedLocale locale("en_US.UTF-8");
+ #endif
+
diff --git a/www/iridium/files/patch-base_files_file__path__watcher__kqueue.h b/www/iridium/files/patch-base_files_file__path__watcher__kqueue.h
new file mode 100644
index 000000000000..e8e9425641b5
--- /dev/null
+++ b/www/iridium/files/patch-base_files_file__path__watcher__kqueue.h
@@ -0,0 +1,13 @@
+--- base/files/file_path_watcher_kqueue.h.orig 2017-04-19 19:06:28 UTC
++++ base/files/file_path_watcher_kqueue.h
+@@ -5,6 +5,10 @@
+ #ifndef BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+ #define BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+
++#ifdef __FreeBSD__
++#include <sys/stdint.h>
++#include <sys/types.h>
++#endif
+ #include <sys/event.h>
+
+ #include <memory>
diff --git a/www/iridium/files/patch-base_files_file__util.h b/www/iridium/files/patch-base_files_file__util.h
new file mode 100644
index 000000000000..9600826a55db
--- /dev/null
+++ b/www/iridium/files/patch-base_files_file__util.h
@@ -0,0 +1,11 @@
+--- base/files/file_util.h.orig 2017-04-19 19:06:28 UTC
++++ base/files/file_util.h
+@@ -406,7 +406,7 @@ BASE_EXPORT bool VerifyPathControlledByA
+ // the directory |path|, in the number of FilePath::CharType, or -1 on failure.
+ BASE_EXPORT int GetMaximumPathComponentLength(const base::FilePath& path);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Broad categories of file systems as returned by statfs() on Linux.
+ enum FileSystemType {
+ FILE_SYSTEM_UNKNOWN, // statfs failed.
diff --git a/www/iridium/files/patch-base_linux__util.cc b/www/iridium/files/patch-base_linux__util.cc
new file mode 100644
index 000000000000..1d8fc3e57e5d
--- /dev/null
+++ b/www/iridium/files/patch-base_linux__util.cc
@@ -0,0 +1,18 @@
+--- base/linux_util.cc.orig 2017-04-19 19:06:28 UTC
++++ base/linux_util.cc
+@@ -110,12 +110,14 @@ char g_linux_distro[kDistroSize] =
+ "CrOS";
+ #elif defined(OS_ANDROID)
+ "Android";
++#elif defined(OS_BSD)
++ "BSD";
+ #else // if defined(OS_LINUX)
+ "Unknown";
+ #endif
+
+ std::string GetLinuxDistro() {
+-#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
++#if defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD)
+ return g_linux_distro;
+ #elif defined(OS_LINUX)
+ LinuxDistroHelper* distro_state_singleton = LinuxDistroHelper::GetInstance();
diff --git a/www/iridium/files/patch-base_native__library__posix.cc b/www/iridium/files/patch-base_native__library__posix.cc
new file mode 100644
index 000000000000..b1db681350d3
--- /dev/null
+++ b/www/iridium/files/patch-base_native__library__posix.cc
@@ -0,0 +1,11 @@
+--- base/native_library_posix.cc.orig 2017-04-19 19:06:28 UTC
++++ base/native_library_posix.cc
+@@ -35,7 +35,7 @@ NativeLibrary LoadNativeLibraryWithOptio
+ // further investigation, as it might vary across versions. Crash here to
+ // warn developers that they're trying to rely on uncertain behavior.
+ CHECK(!options.prefer_own_symbols);
+-#else
++#elif !defined(OS_BSD)
+ if (options.prefer_own_symbols)
+ flags |= RTLD_DEEPBIND;
+ #endif
diff --git a/www/iridium/files/patch-base_posix_unix__domain__socket__linux.cc b/www/iridium/files/patch-base_posix_unix__domain__socket__linux.cc
new file mode 100644
index 000000000000..997b59b8f1ab
--- /dev/null
+++ b/www/iridium/files/patch-base_posix_unix__domain__socket__linux.cc
@@ -0,0 +1,45 @@
+--- base/posix/unix_domain_socket_linux.cc.orig 2017-04-19 19:06:28 UTC
++++ base/posix/unix_domain_socket_linux.cc
+@@ -23,6 +23,15 @@
+
+ namespace base {
+
++#if defined(OS_BSD)
++// Port over Linux ucred structure
++struct ucred {
++ pid_t pid; // process ID of the sending process
++ uid_t uid; // user ID of the sending process
++ gid_t gid; // group ID of the sending process
++};
++#endif
++
+ const size_t UnixDomainSocket::kMaxFileDescriptors = 16;
+
+ #if !defined(OS_NACL_NONSFI)
+@@ -40,8 +49,14 @@ static bool CreateSocketPair(ScopedFD* o
+
+ // static
+ bool UnixDomainSocket::EnableReceiveProcessId(int fd) {
++#if defined(OS_BSD)
++ // XXX(rene) do this? :
++ // taken from dbus, Academic Free License 2.1 / GPL 2+
++ return 0; // fake OK
++#else
+ const int enable = 1;
+ return setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &enable, sizeof(enable)) == 0;
++#endif
+ }
+ #endif // !defined(OS_NACL_NONSFI)
+
+@@ -147,7 +162,11 @@ ssize_t UnixDomainSocket::RecvMsgWithFla
+ // The PNaCl toolchain for Non-SFI binary build does not support
+ // SCM_CREDENTIALS.
+ if (cmsg->cmsg_level == SOL_SOCKET &&
++#if defined(OS_BSD)
++ 1) { // XXX(rene) carpet getting full ...
++#else
+ cmsg->cmsg_type == SCM_CREDENTIALS) {
++#endif
+ DCHECK_EQ(payload_len, sizeof(struct ucred));
+ DCHECK_EQ(pid, -1);
+ pid = reinterpret_cast<struct ucred*>(CMSG_DATA(cmsg))->pid;
diff --git a/www/iridium/files/patch-base_posix_unix__domain__socket__linux__unittest.cc b/www/iridium/files/patch-base_posix_unix__domain__socket__linux__unittest.cc
new file mode 100644
index 000000000000..388ab54a555a
--- /dev/null
+++ b/www/iridium/files/patch-base_posix_unix__domain__socket__linux__unittest.cc
@@ -0,0 +1,18 @@
+--- base/posix/unix_domain_socket_linux_unittest.cc.orig 2017-04-19 19:06:28 UTC
++++ base/posix/unix_domain_socket_linux_unittest.cc
+@@ -2,10 +2,15 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
++#include "build/build_config.h"
++
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <sys/socket.h>
+ #include <sys/types.h>
++#if defined(OS_BSD)
++#include <signal.h>
++#endif
+ #include <unistd.h>
+
+ #include "base/bind.h"
diff --git a/www/iridium/files/patch-base_process_internal__linux.h b/www/iridium/files/patch-base_process_internal__linux.h
new file mode 100644
index 000000000000..eabb22e70f33
--- /dev/null
+++ b/www/iridium/files/patch-base_process_internal__linux.h
@@ -0,0 +1,11 @@
+--- base/process/internal_linux.h.orig 2017-04-19 19:06:28 UTC
++++ base/process/internal_linux.h
+@@ -14,6 +14,8 @@
+
+ #include "base/files/file_path.h"
+
++#include <unistd.h> /* pid_t */
++
+ namespace base {
+
+ class Time;
diff --git a/www/iridium/files/patch-base_process_launch.cc b/www/iridium/files/patch-base_process_launch.cc
new file mode 100644
index 000000000000..2dca0a643ba2
--- /dev/null
+++ b/www/iridium/files/patch-base_process_launch.cc
@@ -0,0 +1,11 @@
+--- base/process/launch.cc.orig 2017-04-19 19:06:28 UTC
++++ base/process/launch.cc
+@@ -15,7 +15,7 @@ LaunchOptions::~LaunchOptions() = defaul
+
+ LaunchOptions LaunchOptionsForTest() {
+ LaunchOptions options;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // To prevent accidental privilege sharing to an untrusted child, processes
+ // are started with PR_SET_NO_NEW_PRIVS. Do not set that here, since this
+ // new child will be used for testing only.
diff --git a/www/iridium/files/patch-base_process_launch.h b/www/iridium/files/patch-base_process_launch.h
new file mode 100644
index 000000000000..5489c617f639
--- /dev/null
+++ b/www/iridium/files/patch-base_process_launch.h
@@ -0,0 +1,20 @@
+--- base/process/launch.h.orig 2017-04-19 19:06:28 UTC
++++ base/process/launch.h
+@@ -138,7 +138,7 @@ struct BASE_EXPORT LaunchOptions {
+ // will be the same as its pid.
+ bool new_process_group = false;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_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
+@@ -151,7 +151,7 @@ struct BASE_EXPORT LaunchOptions {
+
+ // Sets parent process death signal to SIGKILL.
+ bool kill_on_parent_death = false;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_POSIX)
+ // If not empty, launch the specified executable instead of
diff --git a/www/iridium/files/patch-base_process_launch__posix.cc b/www/iridium/files/patch-base_process_launch__posix.cc
new file mode 100644
index 000000000000..7d939793d12a
--- /dev/null
+++ b/www/iridium/files/patch-base_process_launch__posix.cc
@@ -0,0 +1,10 @@
+--- base/process/launch_posix.cc.orig 2017-04-19 19:06:28 UTC
++++ base/process/launch_posix.cc
+@@ -64,6 +64,7 @@
+ #include "base/feature_list.h"
+ #else
+ extern char** environ;
++#pragma weak environ
+ #endif
+
+ namespace base {
diff --git a/www/iridium/files/patch-base_process_memory.cc b/www/iridium/files/patch-base_process_memory.cc
new file mode 100644
index 000000000000..bb441fd052da
--- /dev/null
+++ b/www/iridium/files/patch-base_process_memory.cc
@@ -0,0 +1,11 @@
+--- base/process/memory.cc.orig 2017-04-19 19:06:28 UTC
++++ base/process/memory.cc
+@@ -31,7 +31,7 @@ void TerminateBecauseOutOfMemory(size_t
+ #endif
+
+ // Defined in memory_mac.mm for Mac.
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ bool UncheckedCalloc(size_t num_items, size_t size, void** result) {
+ const size_t alloc_size = num_items * size;
diff --git a/www/iridium/files/patch-base_process_memory.h b/www/iridium/files/patch-base_process_memory.h
new file mode 100644
index 000000000000..f2b7f5269afa
--- /dev/null
+++ b/www/iridium/files/patch-base_process_memory.h
@@ -0,0 +1,11 @@
+--- base/process/memory.h.orig 2017-04-19 19:06:28 UTC
++++ base/process/memory.h
+@@ -32,7 +32,7 @@ BASE_EXPORT void EnableTerminationOnOutO
+ // Crash reporting classifies such crashes as OOM.
+ BASE_EXPORT void TerminateBecauseOutOfMemory(size_t size);
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_ANDROID)
+ BASE_EXPORT extern size_t g_oom_size;
+
+ // The maximum allowed value for the OOM score.
diff --git a/www/iridium/files/patch-base_process_memory__stubs.cc b/www/iridium/files/patch-base_process_memory__stubs.cc
new file mode 100644
index 000000000000..80d7a0cff6d6
--- /dev/null
+++ b/www/iridium/files/patch-base_process_memory__stubs.cc
@@ -0,0 +1,18 @@
+--- base/process/memory_stubs.cc.orig 2017-04-19 19:06:28 UTC
++++ base/process/memory_stubs.cc
+@@ -31,6 +31,8 @@ void TerminateBecauseOutOfMemory(size_t
+ // their respective stdlib function since those functions will return null on a
+ // failure to allocate.
+
++#if !defined(OS_FREEBSD)
++// FreeBSD brings it's own implementation in memory.cc -- cmt
+ bool UncheckedMalloc(size_t size, void** result) {
+ *result = malloc(size);
+ return *result != nullptr;
+@@ -40,5 +42,6 @@ bool UncheckedCalloc(size_t num_items, s
+ *result = calloc(num_items, size);
+ return *result != nullptr;
+ }
++#endif
+
+ } // namespace base
diff --git a/www/iridium/files/patch-base_process_memory__unittest.cc b/www/iridium/files/patch-base_process_memory__unittest.cc
new file mode 100644
index 000000000000..41f8b29840d2
--- /dev/null
+++ b/www/iridium/files/patch-base_process_memory__unittest.cc
@@ -0,0 +1,22 @@
+--- base/process/memory_unittest.cc.orig 2017-04-19 19:06:28 UTC
++++ base/process/memory_unittest.cc
+@@ -93,10 +93,10 @@ TEST(MemoryTest, AllocatorShimWorking) {
+ ASSERT_TRUE(base::allocator::IsAllocatorInitialized());
+ }
+
+-// OpenBSD does not support these tests. Don't test these on ASan/TSan/MSan
++// BSD does not support these tests. Don't test these on ASan/TSan/MSan
+ // configurations: only test the real allocator.
+ // Windows only supports these tests with the allocator shim in place.
+-#if !defined(OS_OPENBSD) && \
++#if !defined(OS_BSD) && \
+ BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) && \
+ !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
+
+@@ -488,5 +488,5 @@ TEST_F(OutOfMemoryHandledTest, Unchecked
+ EXPECT_FALSE(base::UncheckedCalloc(1, test_size_, &value_));
+ EXPECT_TRUE(value_ == NULL);
+ }
+-#endif // !defined(OS_OPENBSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) &&
++#endif // !defined(OS_BSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) &&
+ // !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
diff --git a/www/iridium/files/patch-base_process_process__handle__freebsd.cc b/www/iridium/files/patch-base_process_process__handle__freebsd.cc
new file mode 100644
index 000000000000..4115ed2efc48
--- /dev/null
+++ b/www/iridium/files/patch-base_process_process__handle__freebsd.cc
@@ -0,0 +1,11 @@
+--- base/process/process_handle_freebsd.cc.orig 2017-04-19 19:06:28 UTC
++++ base/process/process_handle_freebsd.cc
+@@ -16,7 +16,7 @@ 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, arraysize(mib), &info, &length, NULL, 0) < 0)
diff --git a/www/iridium/files/patch-base_process_process__info__linux.cc b/www/iridium/files/patch-base_process_process__info__linux.cc
new file mode 100644
index 000000000000..ce71cfc3fc85
--- /dev/null
+++ b/www/iridium/files/patch-base_process_process__info__linux.cc
@@ -0,0 +1,39 @@
+--- base/process/process_info_linux.cc.orig 2017-04-19 19:06:28 UTC
++++ base/process/process_info_linux.cc
+@@ -11,10 +11,28 @@
+ #include "base/process/process_handle.h"
+ #include "base/time/time.h"
+
++#if defined(__FreeBSD__) || defined(__DragonFly__)
++#include <sys/types.h>
++#include <sys/sysctl.h>
++#include <sys/user.h>
++#endif
++
+ namespace base {
+
+ // static
+ const Time CurrentProcessInfo::CreationTime() {
++#if defined(__FreeBSD__) || defined(__DragonFly__)
++ int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
++ struct kinfo_proc proc;
++ size_t len = sizeof(struct kinfo_proc);
++ if (sysctl(mib, arraysize(mib), &proc, &len, NULL, 0) < 0)
++ return Time();
++#if defined(__DragonFly__)
++ return Time::FromTimeVal(proc.kp_start);
++#else
++ return Time::FromTimeVal(proc.ki_start);
++#endif
++#else
+ int64_t start_ticks =
+ internal::ReadProcSelfStatsAndGetFieldAsInt64(internal::VM_STARTTIME);
+ DCHECK(start_ticks);
+@@ -22,6 +40,7 @@ const Time CurrentProcessInfo::CreationT
+ Time boot_time = internal::GetBootTime();
+ DCHECK(!boot_time.is_null());
+ return Time(boot_time + start_offset);
++#endif
+ }
+
+ } // namespace base
diff --git a/www/iridium/files/patch-base_process_process__iterator__freebsd.cc b/www/iridium/files/patch-base_process_process__iterator__freebsd.cc
new file mode 100644
index 000000000000..2ac07ce1eae2
--- /dev/null
+++ b/www/iridium/files/patch-base_process_process__iterator__freebsd.cc
@@ -0,0 +1,36 @@
+--- base/process/process_iterator_freebsd.cc.orig 2017-04-19 19:06:28 UTC
++++ base/process/process_iterator_freebsd.cc
+@@ -10,6 +10,10 @@
+ #include <sys/sysctl.h>
+ #include <unistd.h>
+
++/* getuid() */
++#include <unistd.h>
++#include <sys/types.h>
++
+ #include "base/logging.h"
+ #include "base/macros.h"
+ #include "base/strings/string_split.h"
+@@ -72,19 +76,13 @@ bool ProcessIterator::CheckForNextProces
+ 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, arraysize(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, arraysize(mib), &data[0], &length, NULL, 0) < 0) {
+ LOG(ERROR) << "failed to fetch a commandline";
+ continue;
diff --git a/www/iridium/files/patch-base_process_process__metrics.h b/www/iridium/files/patch-base_process_process__metrics.h
new file mode 100644
index 000000000000..b40a0e896d2b
--- /dev/null
+++ b/www/iridium/files/patch-base_process_process__metrics.h
@@ -0,0 +1,33 @@
+--- base/process/process_metrics.h.orig 2017-04-19 19:06:28 UTC
++++ base/process/process_metrics.h
+@@ -22,6 +22,12 @@
+ #include "base/values.h"
+ #include "build/build_config.h"
+
++#if defined(OS_BSD)
++#include <kvm.h>
++#include <sys/param.h>
++#include <sys/sysctl.h>
++#endif
++
+ #if defined(OS_MACOSX)
+ #include <mach/mach.h>
+ #include "base/process/port_provider_mac.h"
+@@ -329,13 +335,17 @@ BASE_EXPORT bool GetSystemMemoryInfo(Sys
+ // CPU-related ticks. Returns -1 on parse error.
+ // Exposed for testing.
+ BASE_EXPORT int ParseProcStatCPU(const std::string& input);
++#endif
+
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FREEBSD)
+ // Get the number of threads of |process| as available in /proc/<pid>/stat.
+ // This should be used with care as no synchronization with running threads is
+ // done. This is mostly useful to guarantee being single-threaded.
+ // Returns 0 on failure.
+ BASE_EXPORT int GetNumberOfThreads(ProcessHandle process);
++#endif
+
++#if defined(OS_LINUX) || defined(OS_ANDROID)
+ // /proc/self/exe refers to the current executable.
+ BASE_EXPORT extern const char kProcSelfExe[];
+
diff --git a/www/iridium/files/patch-base_process_process__metrics__freebsd.cc b/www/iridium/files/patch-base_process_process__metrics__freebsd.cc
new file mode 100644
index 000000000000..89aa3be55bf4
--- /dev/null
+++ b/www/iridium/files/patch-base_process_process__metrics__freebsd.cc
@@ -0,0 +1,36 @@
+--- base/process/process_metrics_freebsd.cc.orig 2017-04-19 19:06:28 UTC
++++ base/process/process_metrics_freebsd.cc
+@@ -13,6 +13,9 @@
+ #include "base/memory/ptr_util.h"
+ #include "base/sys_info.h"
+
++#include <unistd.h> /* getpagesize() */
++#include <fcntl.h> /* O_RDONLY */
++
+ namespace base {
+
+ ProcessMetrics::ProcessMetrics(ProcessHandle process)
+@@ -122,4 +125,23 @@ size_t GetSystemCommitCharge() {
+ return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize);
+ }
+
++int 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;
++}
++
+ } // namespace base
diff --git a/www/iridium/files/patch-base_process_process__posix.cc b/www/iridium/files/patch-base_process_process__posix.cc
new file mode 100644
index 000000000000..cfaca45e5357
--- /dev/null
+++ b/www/iridium/files/patch-base_process_process__posix.cc
@@ -0,0 +1,90 @@
+--- base/process/process_posix.cc.orig 2017-04-19 19:06:28 UTC
++++ base/process/process_posix.cc
+@@ -21,8 +21,18 @@
+ #include <sys/event.h>
+ #endif
+
++#if defined(OS_BSD)
++#include <signal.h>
++#include <sys/types.h>
++#include <sys/event.h>
++#include <sys/time.h>
++#endif
++
+ namespace {
+
++const int kBackgroundPriority = 5;
++const int kForegroundPriority = 0;
++
+ #if !defined(OS_NACL_NONSFI)
+
+ bool WaitpidWithTimeout(base::ProcessHandle handle,
+@@ -184,13 +194,13 @@ bool WaitForExitWithTimeoutImpl(base::Pr
+ base::ProcessHandle parent_pid = base::GetParentProcessId(handle);
+ base::ProcessHandle our_pid = base::GetCurrentProcessHandle();
+ if (parent_pid != our_pid) {
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // On Mac we can wait on non child processes.
+- return WaitForSingleNonChildProcess(handle, timeout);
++ /* return WaitForSingleNonChildProcess(handle, timeout); */
+ #else
+ // Currently on Linux we can't handle non child processes.
+ NOTIMPLEMENTED();
+-#endif // OS_MACOSX
++#endif // OS_MACOSX || OS_BSD
+ }
+
+ int status;
+@@ -257,12 +267,16 @@ Process Process::DeprecatedGetProcessFro
+ return Process(handle);
+ }
+
+-#if !defined(OS_LINUX) && !defined(OS_MACOSX)
++#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_FREEBSD)
+ // static
+ bool Process::CanBackgroundProcesses() {
+ return false;
+ }
+-#endif // !defined(OS_LINUX) && !defined(OS_MACOSX)
++#elif defined(OS_FREEBSD)
++bool Process::CanBackgroundProcesses() {
++ return true;
++}
++#endif // !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_FREEBSD)
+
+ // static
+ void Process::TerminateCurrentProcessImmediately(int exit_code) {
+@@ -370,15 +384,32 @@ bool Process::WaitForExitWithTimeout(Tim
+ bool Process::IsProcessBackgrounded() const {
+ // See SetProcessBackgrounded().
+ DCHECK(IsValid());
++#if defined(OS_FREEBSD)
++ return true;
++#else
+ return false;
++#endif
+ }
+
+ bool Process::SetProcessBackgrounded(bool value) {
++#if !defined(OS_FREEBSD)
+ // Not implemented for POSIX systems other than Linux and Mac. With POSIX, if
+ // we were to lower the process priority we wouldn't be able to raise it back
+ // to its initial priority.
+ NOTIMPLEMENTED();
+ return false;
++#else
++ DCHECK(IsValid());
++
++ if (!CanBackgroundProcesses())
++ return false;
++
++ int priority = value ? kBackgroundPriority : kForegroundPriority;
++ int result = setpriority(PRIO_PROCESS, process_, priority);
++
++ DPCHECK(result == 0);
++ return result == 0;
++#endif // !defined(OS_FREEBSD)
+ }
+ #endif // !defined(OS_LINUX) && !defined(OS_MACOSX)
+
diff --git a/www/iridium/files/patch-base_profiler_stack__sampling__profiler__unittest.cc b/www/iridium/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
new file mode 100644
index 000000000000..b1d245a6f975
--- /dev/null
+++ b/www/iridium/files/patch-base_profiler_stack__sampling__profiler__unittest.cc
@@ -0,0 +1,11 @@
+--- base/profiler/stack_sampling_profiler_unittest.cc.orig 2017-04-19 19:06:28 UTC
++++ base/profiler/stack_sampling_profiler_unittest.cc
+@@ -33,7 +33,7 @@
+ #include <intrin.h>
+ #include <malloc.h>
+ #include <windows.h>
+-#else
++#elif !defined(OS_BSD)
+ #include <alloca.h>
+ #endif
+
diff --git a/www/iridium/files/patch-base_security__unittest.cc b/www/iridium/files/patch-base_security__unittest.cc
new file mode 100644
index 000000000000..46151b561d17
--- /dev/null
+++ b/www/iridium/files/patch-base_security__unittest.cc
@@ -0,0 +1,11 @@
+--- base/security_unittest.cc.orig 2017-04-19 19:06:28 UTC
++++ base/security_unittest.cc
+@@ -74,7 +74,7 @@ bool IsTcMallocBypassed() {
+ // FAILS_ is too clunky.
+ void OverflowTestsSoftExpectTrue(bool overflow_detected) {
+ if (!overflow_detected) {
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_NACL)
+ // Sadly, on Linux, Android, and OSX we don't have a good story yet. Don't
+ // fail the test, but report.
+ printf("Platform has overflow: %s\n",
diff --git a/www/iridium/files/patch-base_strings_safe__sprintf.cc b/www/iridium/files/patch-base_strings_safe__sprintf.cc
new file mode 100644
index 000000000000..311186684a17
--- /dev/null
+++ b/www/iridium/files/patch-base_strings_safe__sprintf.cc
@@ -0,0 +1,16 @@
+--- base/strings/safe_sprintf.cc.orig 2017-04-19 19:06:28 UTC
++++ base/strings/safe_sprintf.cc
+@@ -115,8 +115,11 @@ class Buffer {
+ count_(0) {
+ // MSVS2013's standard library doesn't mark max() as constexpr yet. cl.exe
+ // supports static_cast but doesn't really implement constexpr yet so it doesn't
+-// complain, but clang does.
+-#if __cplusplus >= 201103 && !(defined(__clang__) && defined(OS_WIN))
++// complain, but clang does. Older FreeBSD (<10) use libstdc++4.2, which
++// doesn't mark numeric_limits::max() as constexp.
++#if __cplusplus >= 201103 && \
++ !(defined(OS_FREEBSD) && __FreeBSD_version > 1000054) && \
++ !(defined(__clang__) && defined(OS_WIN))
+ static_assert(kSSizeMaxConst ==
+ static_cast<size_t>(std::numeric_limits<ssize_t>::max()),
+ "kSSizeMaxConst should be the max value of an ssize_t");
diff --git a/www/iridium/files/patch-base_sys__info__freebsd.cc b/www/iridium/files/patch-base_sys__info__freebsd.cc
new file mode 100644
index 000000000000..301080013828
--- /dev/null
+++ b/www/iridium/files/patch-base_sys__info__freebsd.cc
@@ -0,0 +1,72 @@
+--- base/sys_info_freebsd.cc.orig 2017-04-19 19:06:28 UTC
++++ base/sys_info_freebsd.cc
+@@ -12,12 +12,34 @@
+
+ namespace base {
+
++int64_t SysInfo::AmountOfAvailablePhysicalMemory() {
++ int page_size, r = 0;
++ unsigned 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<int64_t>((pgfree + pginact + pgcache) * page_size);
++}
++
+ int64_t SysInfo::AmountOfPhysicalMemory() {
+- int pages, page_size;
++ 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;
+ }
+@@ -25,14 +47,24 @@ int64_t SysInfo::AmountOfPhysicalMemory(
+ }
+
+ // static
+-uint64_t SysInfo::MaxSharedMemorySize() {
+- size_t limit;
+- size_t size = sizeof(limit);
+- if (sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0) < 0) {
++std::string SysInfo::CPUModelName() {
++ int mib[] = { CTL_HW, HW_MODEL };
++ char name[256];
++ size_t size = arraysize(name);
++ if (sysctl(mib, arraysize(mib), &name, &size, NULL, 0) == 0)
++ return name;
++ return std::string();
++}
++
++int SysInfo::NumberOfProcessors() {
++ int mib[] = { CTL_HW, HW_NCPU };
++ int ncpu;
++ size_t size = sizeof(ncpu);
++ if (sysctl(mib, arraysize(mib), &ncpu, &size, NULL, 0) == -1) {
+ NOTREACHED();
+- return 0;
++ return 1;
+ }
+- return static_cast<uint64_t>(limit);
++ return ncpu;
+ }
+
+ } // namespace base
diff --git a/www/iridium/files/patch-base_sys__info__posix.cc b/www/iridium/files/patch-base_sys__info__posix.cc
new file mode 100644
index 000000000000..90ecf301d369
--- /dev/null
+++ b/www/iridium/files/patch-base_sys__info__posix.cc
@@ -0,0 +1,20 @@
+--- base/sys_info_posix.cc.orig 2017-04-19 19:06:28 UTC
++++ base/sys_info_posix.cc
+@@ -35,7 +35,7 @@
+
+ namespace {
+
+-#if !defined(OS_OPENBSD)
++#if !defined(OS_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.
+@@ -128,7 +128,7 @@ bool GetDiskSpaceInfo(const base::FilePa
+
+ namespace base {
+
+-#if !defined(OS_OPENBSD)
++#if !defined(OS_BSD)
+ int SysInfo::NumberOfProcessors() {
+ return g_lazy_number_of_processors.Get().value();
+ }
diff --git a/www/iridium/files/patch-base_test_BUILD.gn b/www/iridium/files/patch-base_test_BUILD.gn
new file mode 100644
index 000000000000..2bc772bb511c
--- /dev/null
+++ b/www/iridium/files/patch-base_test_BUILD.gn
@@ -0,0 +1,11 @@
+--- base/test/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ base/test/BUILD.gn
+@@ -312,7 +312,7 @@ static_library("run_all_base_unittests")
+ ]
+ }
+
+-if (is_linux) {
++if (is_linux || is_bsd) {
+ shared_library("malloc_wrapper") {
+ testonly = true
+ sources = [
diff --git a/www/iridium/files/patch-base_test_launcher_test__launcher.cc b/www/iridium/files/patch-base_test_launcher_test__launcher.cc
new file mode 100644
index 000000000000..0d81c983be42
--- /dev/null
+++ b/www/iridium/files/patch-base_test_launcher_test__launcher.cc
@@ -0,0 +1,13 @@
+--- base/test/launcher/test_launcher.cc.orig 2017-04-19 19:06:28 UTC
++++ base/test/launcher/test_launcher.cc
+@@ -60,6 +60,10 @@
+ #include "base/win/windows_version.h"
+ #endif
+
++#if defined(OS_FREEBSD)
++#include <signal.h>
++#endif
++
+ namespace base {
+
+ // See https://groups.google.com/a/chromium.org/d/msg/chromium-dev/nkdTP7sstSc/uT3FaE_sgkAJ .
diff --git a/www/iridium/files/patch-base_test_test__file__util__posix.cc b/www/iridium/files/patch-base_test_test__file__util__posix.cc
new file mode 100644
index 000000000000..be8a681a71e6
--- /dev/null
+++ b/www/iridium/files/patch-base_test_test__file__util__posix.cc
@@ -0,0 +1,11 @@
+--- base/test/test_file_util_posix.cc.orig 2017-04-19 19:06:28 UTC
++++ base/test/test_file_util_posix.cc
+@@ -79,7 +79,7 @@ bool DieFileDie(const FilePath& file, bo
+ return DeleteFile(file, recurse);
+ }
+
+-#if !defined(OS_LINUX) && !defined(OS_MACOSX)
++#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_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/iridium/files/patch-base_third__party_libevent_BUILD.gn b/www/iridium/files/patch-base_third__party_libevent_BUILD.gn
new file mode 100644
index 000000000000..512862246dbf
--- /dev/null
+++ b/www/iridium/files/patch-base_third__party_libevent_BUILD.gn
@@ -0,0 +1,12 @@
+--- base/third_party/libevent/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ base/third_party/libevent/BUILD.gn
+@@ -50,6 +50,9 @@ static_library("libevent") {
+ "linux/event-config.h",
+ ]
+ include_dirs = [ "linux" ]
++ } else if (is_bsd) {
++ sources += [ "kqueue.c" ]
++ include_dirs = [ "freebsd" ]
+ } else if (is_android) {
+ sources += [
+ "android/config.h",
diff --git a/www/iridium/files/patch-base_threading_platform__thread.h b/www/iridium/files/patch-base_threading_platform__thread.h
new file mode 100644
index 000000000000..85bdf78aadcb
--- /dev/null
+++ b/www/iridium/files/patch-base_threading_platform__thread.h
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread.h.orig 2017-04-19 19:06:28 UTC
++++ base/threading/platform_thread.h
+@@ -211,7 +211,7 @@ class BASE_EXPORT PlatformThread {
+
+ static ThreadPriority GetCurrentThreadPriority();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Toggles a specific thread's priority 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/iridium/files/patch-base_threading_platform__thread__linux.cc b/www/iridium/files/patch-base_threading_platform__thread__linux.cc
new file mode 100644
index 000000000000..dc0070c650a2
--- /dev/null
+++ b/www/iridium/files/patch-base_threading_platform__thread__linux.cc
@@ -0,0 +1,30 @@
+--- base/threading/platform_thread_linux.cc.orig 2017-04-19 19:06:28 UTC
++++ base/threading/platform_thread_linux.cc
+@@ -19,7 +19,9 @@
+
+ #if !defined(OS_NACL)
+ #include <pthread.h>
++#if !defined(OS_BSD)
+ #include <sys/prctl.h>
++#endif
+ #include <sys/resource.h>
+ #include <sys/time.h>
+ #include <sys/types.h>
+@@ -130,7 +132,7 @@ void PlatformThread::SetName(const std::
+ ThreadIdNameManager::GetInstance()->SetName(CurrentId(), name);
+ tracked_objects::ThreadData::InitializeThreadContext(name);
+
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_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
+@@ -150,7 +152,7 @@ void PlatformThread::SetName(const std::
+ #endif // !defined(OS_NACL)
+ }
+
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ // static
+ void PlatformThread::SetThreadPriority(PlatformThreadId thread_id,
+ ThreadPriority priority) {
diff --git a/www/iridium/files/patch-base_threading_platform__thread__posix.cc b/www/iridium/files/patch-base_threading_platform__thread__posix.cc
new file mode 100644
index 000000000000..936d327d8a47
--- /dev/null
+++ b/www/iridium/files/patch-base_threading_platform__thread__posix.cc
@@ -0,0 +1,11 @@
+--- base/threading/platform_thread_posix.cc.orig 2017-04-19 19:06:28 UTC
++++ base/threading/platform_thread_posix.cc
+@@ -56,7 +56,7 @@ void* ThreadFunc(void* params) {
+ if (!thread_params->joinable)
+ base::ThreadRestrictions::SetSingletonAllowed(false);
+
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ // Threads on linux/android may inherit their priority from the thread
+ // where they were created. This explicitly sets the priority of all new
+ // threads.
diff --git a/www/iridium/files/patch-base_threading_thread__task__runner__handle.cc b/www/iridium/files/patch-base_threading_thread__task__runner__handle.cc
new file mode 100644
index 000000000000..468a4f224611
--- /dev/null
+++ b/www/iridium/files/patch-base_threading_thread__task__runner__handle.cc
@@ -0,0 +1,26 @@
+--- base/threading/thread_task_runner_handle.cc.orig 2017-04-19 19:06:28 UTC
++++ base/threading/thread_task_runner_handle.cc
+@@ -7,6 +7,7 @@
+ #include <utility>
+
+ #include "base/bind.h"
++#include "base/callback_helpers.h"
+ #include "base/lazy_instance.h"
+ #include "base/logging.h"
+ #include "base/memory/ptr_util.h"
+@@ -34,6 +35,7 @@ bool ThreadTaskRunnerHandle::IsSet() {
+ return !!lazy_tls_ptr.Pointer()->Get();
+ }
+
++#if defined(OS_BSD)
+ // static
+ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideForTesting(
+ scoped_refptr<SingleThreadTaskRunner> overriding_task_runner) {
+@@ -77,6 +79,7 @@ ScopedClosureRunner ThreadTaskRunnerHand
+ base::Passed(&overriding_task_runner),
+ base::Unretained(ttrh->task_runner_.get())));
+ }
++#endif
+
+ ThreadTaskRunnerHandle::ThreadTaskRunnerHandle(
+ scoped_refptr<SingleThreadTaskRunner> task_runner)
diff --git a/www/iridium/files/patch-base_trace__event_malloc__dump__provider.cc b/www/iridium/files/patch-base_trace__event_malloc__dump__provider.cc
new file mode 100644
index 000000000000..e8a0513eee80
--- /dev/null
+++ b/www/iridium/files/patch-base_trace__event_malloc__dump__provider.cc
@@ -0,0 +1,11 @@
+--- base/trace_event/malloc_dump_provider.cc.orig 2017-04-19 19:06:28 UTC
++++ base/trace_event/malloc_dump_provider.cc
+@@ -21,7 +21,7 @@
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
+ #else
+-#include <malloc.h>
++#include <stdlib.h>
+ #endif
+ #if defined(OS_WIN)
+ #include <windows.h>
diff --git a/www/iridium/files/patch-base_trace__event_process__memory__dump.cc b/www/iridium/files/patch-base_trace__event_process__memory__dump.cc
new file mode 100644
index 000000000000..446490dd7e56
--- /dev/null
+++ b/www/iridium/files/patch-base_trace__event_process__memory__dump.cc
@@ -0,0 +1,11 @@
+--- base/trace_event/process_memory_dump.cc.orig 2017-04-19 19:06:28 UTC
++++ base/trace_event/process_memory_dump.cc
+@@ -83,7 +83,7 @@ size_t ProcessMemoryDump::CountResidentB
+ const size_t kMaxChunkSize = 8 * 1024 * 1024;
+ size_t max_vec_size =
+ GetSystemPageCount(std::min(mapped_size, kMaxChunkSize), page_size);
+-#if defined(OS_MACOSX) || defined(OS_IOS)
++#if defined(OS_MACOSX) || defined(OS_IOS) || defined(OS_BSD)
+ std::unique_ptr<char[]> vec(new char[max_vec_size]);
+ #elif defined(OS_WIN)
+ std::unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec(
diff --git a/www/iridium/files/patch-breakpad_BUILD.gn b/www/iridium/files/patch-breakpad_BUILD.gn
new file mode 100644
index 000000000000..9bc9d6529dba
--- /dev/null
+++ b/www/iridium/files/patch-breakpad_BUILD.gn
@@ -0,0 +1,11 @@
+--- breakpad/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ breakpad/BUILD.gn
+@@ -468,7 +468,7 @@ if (is_mac) {
+ }
+ }
+
+-if (is_linux || is_android) {
++if (is_linux || is_bsd || is_android) {
+ if (current_toolchain == host_toolchain) {
+ executable("symupload") {
+ sources = [
diff --git a/www/iridium/files/patch-breakpad_src_build_common.gypi b/www/iridium/files/patch-breakpad_src_build_common.gypi
new file mode 100644
index 000000000000..6bb11e2f9cb1
--- /dev/null
+++ b/www/iridium/files/patch-breakpad_src_build_common.gypi
@@ -0,0 +1,18 @@
+--- breakpad/src/build/common.gypi.orig 2017-04-19 19:07:40 UTC
++++ breakpad/src/build/common.gypi
+@@ -813,15 +813,6 @@
+ ],
+ },
+ }],
+- # FreeBSD-specific options; note that most FreeBSD options are set above,
+- # with Linux.
+- ['OS=="freebsd"', {
+- 'target_defaults': {
+- 'ldflags': [
+- '-Wl,--no-keep-memory',
+- ],
+- },
+- }],
+ ['OS=="solaris"', {
+ 'cflags!': ['-fvisibility=hidden'],
+ 'cflags_cc!': ['-fvisibility-inlines-hidden'],
diff --git a/www/iridium/files/patch-breakpad_src_common_simple__string__dictionary.h b/www/iridium/files/patch-breakpad_src_common_simple__string__dictionary.h
new file mode 100644
index 000000000000..307f136e9b98
--- /dev/null
+++ b/www/iridium/files/patch-breakpad_src_common_simple__string__dictionary.h
@@ -0,0 +1,11 @@
+--- breakpad/src/common/simple_string_dictionary.h.orig 2017-04-19 19:07:40 UTC
++++ breakpad/src/common/simple_string_dictionary.h
+@@ -33,7 +33,7 @@
+ #include <assert.h>
+ #include <string.h>
+
+-#include "common/basictypes.h"
++#include "breakpad/src/common/basictypes.h"
+
+ namespace google_breakpad {
+
diff --git a/www/iridium/files/patch-build_config_BUILD.gn b/www/iridium/files/patch-build_config_BUILD.gn
new file mode 100644
index 000000000000..2f85025c9f8b
--- /dev/null
+++ b/www/iridium/files/patch-build_config_BUILD.gn
@@ -0,0 +1,29 @@
+--- build/config/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ build/config/BUILD.gn
+@@ -193,7 +193,7 @@ config("debug") {
+ # builds, and we have to tell it to turn it off.
+ defines += [ "_HAS_ITERATOR_DEBUGGING=0" ]
+ }
+- } else if (is_linux && current_cpu == "x64" && enable_iterator_debugging) {
++ } else if ((is_linux || is_bsd) && current_cpu == "x64" && enable_iterator_debugging) {
+ # Enable libstdc++ debugging facilities to help catch problems early, see
+ # http://crbug.com/65151 .
+ # TODO(phajdan.jr): Should we enable this for all of POSIX?
+@@ -276,7 +276,7 @@ config("default_libs") {
+ "CoreText.framework",
+ "Foundation.framework",
+ ]
+- } else if (is_linux) {
++ } else if (is_linux && !is_bsd) {
+ libs = [
+ "dl",
+ "rt",
+@@ -307,7 +307,7 @@ config("executable_config") {
+ ]
+ } else if (is_ios) {
+ configs += [ "//build/config/ios:ios_dynamic_flags" ]
+- } else if (is_linux || is_android) {
++ } else if (is_linux || is_android || is_bsd) {
+ configs += [ "//build/config/gcc:executable_ldconfig" ]
+ if (is_android) {
+ configs += [ "//build/config/android:executable_config" ]
diff --git a/www/iridium/files/patch-build_config_BUILDCONFIG.gn b/www/iridium/files/patch-build_config_BUILDCONFIG.gn
new file mode 100644
index 000000000000..841b49d3906f
--- /dev/null
+++ b/www/iridium/files/patch-build_config_BUILDCONFIG.gn
@@ -0,0 +1,66 @@
+--- build/config/BUILDCONFIG.gn.orig 2017-04-19 19:06:28 UTC
++++ build/config/BUILDCONFIG.gn
+@@ -131,12 +131,13 @@ declare_args() {
+ is_official_build = false
+
+ # Whether we're a traditional desktop unix.
+- is_desktop_linux = current_os == "linux"
++ is_desktop_linux = current_os == "linux" || current_os == "bsd"
+
+ # Set to true when compiling with the Clang compiler. Typically this is used
+ # to configure warnings.
+ is_clang = current_os == "mac" || current_os == "ios" ||
+- current_os == "linux" || current_os == "chromeos"
++ current_os == "linux" || current_os == "chromeos" ||
++ current_os == "bsd"
+
+ # Allows the path to a custom target toolchain to be injected as a single
+ # argument, and set as the default toolchain.
+@@ -185,8 +186,8 @@ if (host_toolchain == "") {
+ # TODO(dpranke): Add some sort of assert here that verifies that
+ # no toolchain omitted host_toolchain from its toolchain_args().
+
+- if (host_os == "linux") {
+- if (target_os != "linux") {
++ if (host_os == "linux" || host_os == "bsd") {
++ if (target_os != "linux" || target_os != "bsd") {
+ # TODO(dpranke) - is_clang normally applies only to the target
+ # build, and there is no way to indicate that you want to override
+ # it for both the target build *and* the host build. Do we need to
+@@ -222,7 +223,7 @@ if (target_os == "android") {
+ } else {
+ _default_toolchain = "//build/toolchain/android:android_$target_cpu"
+ }
+-} else if (target_os == "chromeos" || target_os == "linux") {
++} else if (target_os == "chromeos" || target_os == "linux" || target_os == "bsd") {
+ # See comments in build/toolchain/cros/BUILD.gn about board compiles.
+ if (is_clang) {
+ _default_toolchain = "//build/toolchain/linux:clang_$target_cpu"
+@@ -342,8 +343,17 @@ if (current_os == "win" || current_os ==
+ is_nacl = false
+ is_posix = true
+ is_win = false
++} else if (current_os == "bsd") {
++ is_android = false
++ is_chromeos = false
++ is_ios = false
++ is_linux = false
++ is_bsd = true
++ is_mac = false
++ is_nacl = false
++ is_posix = true
++ is_win = false
+ }
+-
+ # =============================================================================
+ # SOURCES FILTERS
+ # =============================================================================
+@@ -412,7 +422,7 @@ if (!is_ios) {
+ if (!is_mac && !is_ios) {
+ sources_assignment_filter += [ "*.mm" ]
+ }
+-if (!is_linux) {
++if (!is_linux && !is_bsd) {
+ sources_assignment_filter += [
+ "*_linux.h",
+ "*_linux.cc",
diff --git a/www/iridium/files/patch-build_config_allocator.gni b/www/iridium/files/patch-build_config_allocator.gni
new file mode 100644
index 000000000000..ad404179d272
--- /dev/null
+++ b/www/iridium/files/patch-build_config_allocator.gni
@@ -0,0 +1,16 @@
+--- build/config/allocator.gni.orig 2017-04-19 19:06:28 UTC
++++ build/config/allocator.gni
+@@ -45,10 +45,10 @@ assert(use_allocator == "none" || use_al
+ assert(!is_win || use_allocator == "none", "Tcmalloc doesn't work on Windows.")
+ assert(!is_mac || use_allocator == "none", "Tcmalloc doesn't work on macOS.")
+
+-assert(!use_experimental_allocator_shim || is_linux || is_android || is_win ||
+- is_mac,
++assert(!use_experimental_allocator_shim || is_linux || is_android || is_win ||
++ is_mac || is_bsd,
+ "use_experimental_allocator_shim supported only on Linux, Android, " +
+- "Windows and macOS targets")
++ "Windows, macOS and BSD targets")
+
+ if (is_win && use_experimental_allocator_shim) {
+ assert(!is_component_build,
diff --git a/www/iridium/files/patch-build_config_clang_BUILD.gn b/www/iridium/files/patch-build_config_clang_BUILD.gn
new file mode 100644
index 000000000000..9a30eeb8faeb
--- /dev/null
+++ b/www/iridium/files/patch-build_config_clang_BUILD.gn
@@ -0,0 +1,20 @@
+--- build/config/clang/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ build/config/clang/BUILD.gn
+@@ -20,7 +20,7 @@ config("find_bad_constructs") {
+ rebase_path("${clang_base_path}/lib/libFindBadConstructs.dylib",
+ root_build_dir),
+ ]
+- } else if (is_linux || is_android) {
++ } else if (is_linux || is_bsd || is_android) {
+ cflags += [
+ "-Xclang",
+ "-load",
+@@ -41,7 +41,7 @@ config("find_bad_constructs") {
+ "check-auto-raw-pointer",
+ ]
+
+- if ((is_linux || is_android) && !is_chromecast) {
++ if ((is_linux || is_bsd || is_android) && !is_chromecast) {
+ cflags += [
+ "-Xclang",
+ "-plugin-arg-find-bad-constructs",
diff --git a/www/iridium/files/patch-build_config_compiler_BUILD.gn b/www/iridium/files/patch-build_config_compiler_BUILD.gn
new file mode 100644
index 000000000000..97095807f977
--- /dev/null
+++ b/www/iridium/files/patch-build_config_compiler_BUILD.gn
@@ -0,0 +1,100 @@
+--- build/config/compiler/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ build/config/compiler/BUILD.gn
+@@ -158,7 +158,7 @@ config("compiler") {
+ configs += [ "//build/config/win:compiler" ]
+ } else if (is_android) {
+ configs += [ "//build/config/android:compiler" ]
+- } else if (is_linux) {
++ } else if (is_linux || is_bsd) {
+ configs += [ "//build/config/linux:compiler" ]
+ } else if (is_nacl) {
+ configs += [ "//build/config/nacl:compiler" ]
+@@ -301,7 +301,7 @@ config("compiler") {
+
+ # Linux/Android common flags setup.
+ # ---------------------------------
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ cflags += [
+ "-fPIC",
+ "-pipe", # Use pipes for communicating between sub-processes. Faster.
+@@ -428,14 +428,14 @@ config("compiler") {
+ # clang-cl (used if is_win) doesn't expose this flag.
+ # Currently disabled for nacl since its toolchain lacks this flag (too old).
+ # TODO(zforman): Once nacl's toolchain is updated, remove check.
+- if (is_clang && is_linux && strip_absolute_paths_from_debug_symbols) {
++ if (is_clang && (is_linux || is_bsd) && strip_absolute_paths_from_debug_symbols) {
+ absolute_path = rebase_path("//.")
+ cflags += [ "-fdebug-prefix-map=$absolute_path=." ]
+ }
+
+ # C++11 compiler flags setup.
+ # ---------------------------
+- if (is_linux || is_android || (is_nacl && is_clang)) {
++ if (is_linux || is_bsd || is_android || (is_nacl && is_clang)) {
+ # gnu++11 instead of c++11 is needed because some code uses typeof() (a
+ # GNU extension).
+ # TODO(thakis): Eventually switch this to c++11 instead,
+@@ -488,7 +488,7 @@ config("compiler") {
+ ]
+
+ # Apply a lower LTO optimization level as the default is too slow.
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ if (use_lld) {
+ ldflags += [ "-Wl,--lto-O1" ]
+ } else {
+@@ -508,7 +508,7 @@ config("compiler") {
+ # targeting ARM, without this flag, LTO produces a .text section that is
+ # larger than the maximum call displacement, preventing the linker from
+ # relocating calls (http://llvm.org/PR22999).
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ ldflags += [ "-Wl,-plugin-opt,-function-sections" ]
+ }
+ }
+@@ -776,7 +776,7 @@ config("compiler_codegen") {
+ # configs -= [ "//build/config/compiler:clang_stackrealign" ]
+ # See https://crbug.com/556393 for details of where it must be avoided.
+ config("clang_stackrealign") {
+- if (is_clang && current_cpu == "x86" && is_linux) {
++ if (is_clang && current_cpu == "x86" && (is_linux || is_bsd)) {
+ cflags = [
+ # Align the stack on 16-byte boundaries, http://crbug.com/418554.
+ "-mstack-alignment=16",
+@@ -830,7 +830,7 @@ config("runtime_library") {
+ # smaller.
+ if (is_win) {
+ configs += [ "//build/config/win:runtime_library" ]
+- } else if (is_linux) {
++ } else if (is_linux || is_bsd) {
+ configs += [ "//build/config/linux:runtime_library" ]
+ } else if (is_ios) {
+ configs += [ "//build/config/ios:runtime_library" ]
+@@ -1087,7 +1087,7 @@ config("default_warnings") {
+
+ # use_xcode_clang only refers to the iOS toolchain, host binaries use
+ # chromium's clang always.
+- if (!is_nacl && (!use_xcode_clang || current_toolchain == host_toolchain)) {
++ if (!is_nacl && !is_bsd && (!use_xcode_clang || current_toolchain == host_toolchain)) {
+ # Flags NaCl (Clang 3.7) and Xcode 7.3 (Clang clang-703.0.31) do not
+ # recognize.
+ cflags += [
+@@ -1144,7 +1144,7 @@ config("chromium_code") {
+ ]
+
+ if (!is_debug && !using_sanitizer &&
+- (!is_linux || !is_clang || is_official_build)) {
++ (!is_linux || !is_bsd || !is_clang || is_official_build)) {
+ # _FORTIFY_SOURCE isn't really supported by Clang now, see
+ # http://llvm.org/bugs/show_bug.cgi?id=16821.
+ # It seems to work fine with Ubuntu 12 headers though, so use it in
+@@ -1203,7 +1203,7 @@ config("no_chromium_code") {
+ ]
+ }
+
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ cflags_cc += [
+ # Don't warn about hash_map in third-party code.
+ "-Wno-deprecated",
diff --git a/www/iridium/files/patch-build_config_crypto.gni b/www/iridium/files/patch-build_config_crypto.gni
new file mode 100644
index 000000000000..29f38a66cf20
--- /dev/null
+++ b/www/iridium/files/patch-build_config_crypto.gni
@@ -0,0 +1,8 @@
+--- build/config/crypto.gni.orig 2017-04-19 19:06:28 UTC
++++ build/config/crypto.gni
+@@ -20,4 +20,4 @@ use_openssl_certs = is_android || is_nac
+
+ # True if NSS is used for certificate handling. It is possible to use OpenSSL
+ # for the crypto library, but NSS for the platform certificate library.
+-use_nss_certs = is_linux
++use_nss_certs = is_linux || is_bsd
diff --git a/www/iridium/files/patch-build_config_features.gni b/www/iridium/files/patch-build_config_features.gni
new file mode 100644
index 000000000000..bb7ef35cb8c8
--- /dev/null
+++ b/www/iridium/files/patch-build_config_features.gni
@@ -0,0 +1,19 @@
+--- build/config/features.gni.orig 2017-04-19 19:06:28 UTC
++++ build/config/features.gni
+@@ -60,13 +60,13 @@ declare_args() {
+ # libudev usage. This currently only affects the content layer.
+ use_udev = is_linux && !is_chromecast
+
+- use_dbus = is_linux && !is_chromecast
++ use_dbus = (is_linux || is_bsd) && !is_chromecast
+
+ # Option controlling the use of GConf (the classic GNOME configuration
+ # system).
+- use_gconf = is_linux && !is_chromeos && !is_chromecast
++ use_gconf = (is_linux || is_bsd) && !is_chromeos && !is_chromecast
+
+- use_gio = is_linux && !is_chromeos && !is_chromecast
++ use_gio = (is_linux || is_bsd) && !is_chromeos && !is_chromecast
+
+ # Whether or not to use external popup menu.
+ use_external_popup_menu = is_android || is_mac
diff --git a/www/iridium/files/patch-build_config_linux_gtk2_BUILD.gn b/www/iridium/files/patch-build_config_linux_gtk2_BUILD.gn
new file mode 100644
index 000000000000..9943c1388043
--- /dev/null
+++ b/www/iridium/files/patch-build_config_linux_gtk2_BUILD.gn
@@ -0,0 +1,11 @@
+--- build/config/linux/gtk2/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ build/config/linux/gtk2/BUILD.gn
+@@ -4,7 +4,7 @@
+
+ import("//build/config/linux/pkg_config.gni")
+
+-assert(is_linux, "This file should only be referenced on Linux")
++assert(is_linux || is_bsd, "This file should only be referenced on Linux")
+
+ # Depend on //build/config/linux/gtk2 to use GTKv2. Depend on
+ # //build/config/linux/gtk to get GTK 2 or 3 depending on the build flags.
diff --git a/www/iridium/files/patch-build_config_linux_gtk3_BUILD.gn b/www/iridium/files/patch-build_config_linux_gtk3_BUILD.gn
new file mode 100644
index 000000000000..e9bc6f57d64d
--- /dev/null
+++ b/www/iridium/files/patch-build_config_linux_gtk3_BUILD.gn
@@ -0,0 +1,11 @@
+--- build/config/linux/gtk3/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ build/config/linux/gtk3/BUILD.gn
+@@ -4,7 +4,7 @@
+
+ import("//build/config/linux/pkg_config.gni")
+
+-assert(is_linux, "This file should only be referenced on Linux")
++assert(is_linux || is_bsd, "This file should only be referenced on Linux")
+
+ # Depend on //build/config/linux/gtk3 to use GTKv3. Depend on
+ # //build/config/linux/gtk to get GTK 2 or 3 depending on the build flags.
diff --git a/www/iridium/files/patch-build_config_linux_gtk_BUILD.gn b/www/iridium/files/patch-build_config_linux_gtk_BUILD.gn
new file mode 100644
index 000000000000..b7ad2252b439
--- /dev/null
+++ b/www/iridium/files/patch-build_config_linux_gtk_BUILD.gn
@@ -0,0 +1,11 @@
+--- build/config/linux/gtk/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ build/config/linux/gtk/BUILD.gn
+@@ -5,7 +5,7 @@
+ import("//build/config/linux/gtk/gtk.gni")
+ import("//build/config/linux/pkg_config.gni")
+
+-assert(is_linux, "This file should only be referenced on Linux")
++assert(is_linux || is_bsd, "This file should only be referenced on Linux")
+
+ # The target in this file will automatically reference GTK2 or GTK3 depending
+ # on the state of the build flag. Some builds reference both 2 and 3, and some
diff --git a/www/iridium/files/patch-build_config_linux_pkg-config.py b/www/iridium/files/patch-build_config_linux_pkg-config.py
new file mode 100644
index 000000000000..f8a75c937b02
--- /dev/null
+++ b/www/iridium/files/patch-build_config_linux_pkg-config.py
@@ -0,0 +1,26 @@
+--- build/config/linux/pkg-config.py.orig 2017-04-19 19:06:28 UTC
++++ build/config/linux/pkg-config.py
+@@ -57,8 +57,12 @@ def SetConfigPath(options):
+ print "You must specify an architecture via -a if using a sysroot."
+ sys.exit(1)
+
+- libdir = sysroot + '/usr/' + options.system_libdir + '/pkgconfig'
+- libdir += ':' + sysroot + '/usr/share/pkgconfig'
++ if "linux" in sys.platform:
++ libdir = sysroot + '/libdata/' + options.system_libdir + '/pkgconfig'
++ libdir += ':' + sysroot + '/usr/share/pkgconfig'
++ elif "bsd" in sys.platform:
++ libdir = sysroot + '/libdata/pkgconfig'
++ libdir += ':' + '/usr/libdata/pkgconfig'
+ os.environ['PKG_CONFIG_LIBDIR'] = libdir
+ return libdir
+
+@@ -107,7 +111,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 "bsd" not in sys.platform:
+ print "[[],[],[],[],[]]"
+ return 0
+
diff --git a/www/iridium/files/patch-build_config_sanitizers_BUILD.gn b/www/iridium/files/patch-build_config_sanitizers_BUILD.gn
new file mode 100644
index 000000000000..e385f3ee575c
--- /dev/null
+++ b/www/iridium/files/patch-build_config_sanitizers_BUILD.gn
@@ -0,0 +1,20 @@
+--- build/config/sanitizers/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ build/config/sanitizers/BUILD.gn
+@@ -428,7 +428,7 @@ config("lsan_flags") {
+
+ config("msan_flags") {
+ if (is_msan) {
+- assert(is_linux, "msan only supported on linux x86_64")
++ assert(is_linux || is_bsd, "msan only supported on linux x86_64")
+ if (!defined(msan_blacklist_path)) {
+ msan_blacklist_path =
+ rebase_path("//tools/msan/blacklist.txt", root_build_dir)
+@@ -443,7 +443,7 @@ config("msan_flags") {
+
+ config("tsan_flags") {
+ if (is_tsan) {
+- assert(is_linux, "tsan only supported on linux x86_64")
++ assert(is_linux || is_bsd, "tsan only supported on linux x86_64")
+ if (!defined(tsan_blacklist_path)) {
+ tsan_blacklist_path =
+ rebase_path("//tools/memory/tsan_v2/ignores.txt", root_build_dir)
diff --git a/www/iridium/files/patch-build_config_sanitizers_sanitizers.gni b/www/iridium/files/patch-build_config_sanitizers_sanitizers.gni
new file mode 100644
index 000000000000..f7eeffba7876
--- /dev/null
+++ b/www/iridium/files/patch-build_config_sanitizers_sanitizers.gni
@@ -0,0 +1,13 @@
+--- build/config/sanitizers/sanitizers.gni.orig 2017-04-19 19:06:28 UTC
++++ build/config/sanitizers/sanitizers.gni
+@@ -54,8 +54,8 @@ declare_args() {
+ # See http://clang.llvm.org/docs/ControlFlowIntegrity.html
+ #
+ # TODO(pcc): Remove this flag if/when CFI is enabled in all official builds.
+- is_cfi = target_os == "linux" && !is_chromeos && target_cpu == "x64" &&
+- is_official_build && allow_posix_link_time_opt
++ is_cfi = (target_os == "linux" || target_os == "bsd") && !is_chromeos &&
++ target_cpu == "x64" && is_official_build && allow_posix_link_time_opt
+
+ # Enable checks for bad casts: derived cast and unrelated cast.
+ # TODO(krasin): remove this, when we're ready to add these checks by default.
diff --git a/www/iridium/files/patch-build_config_ui.gni b/www/iridium/files/patch-build_config_ui.gni
new file mode 100644
index 000000000000..47d20b7a4045
--- /dev/null
+++ b/www/iridium/files/patch-build_config_ui.gni
@@ -0,0 +1,36 @@
+--- build/config/ui.gni.orig 2017-04-19 19:06:28 UTC
++++ build/config/ui.gni
+@@ -31,10 +31,10 @@ declare_args() {
+
+ # Indicates if Aura is enabled. Aura is a low-level windowing library, sort
+ # of a replacement for GDI or GTK.
+- use_aura = is_win || is_linux
++ use_aura = is_win || is_linux || is_bsd
+
+ # Whether we should use glib, a low level C utility library.
+- use_glib = is_linux
++ use_glib = is_linux || is_bsd
+
+ # Indicates if Wayland display server support is enabled.
+ enable_wayland_server = is_chromeos
+@@ -55,17 +55,17 @@ declare_args() {
+
+ # Use GPU accelerated cross process image transport by default on linux builds
+ # with the Aura window manager.
+-ui_compositor_image_transport = use_aura && is_linux
++ui_compositor_image_transport = use_aura && (is_linux || is_bsd)
+
+ # Indicates if the UI toolkit depends on X11.
+-use_x11 = is_linux && !use_ozone
++use_x11 = (is_linux || is_bsd) && !use_ozone
+
+ # Turn off glib if Ozone is enabled.
+ if (use_ozone) {
+ use_glib = false
+ }
+
+-if (is_linux && !use_ozone) {
++if ((is_linux || is_bsd) && !use_ozone) {
+ use_cairo = true
+ use_pango = true
+ } else {
diff --git a/www/iridium/files/patch-build_linux_libpci_BUILD.gn b/www/iridium/files/patch-build_linux_libpci_BUILD.gn
new file mode 100644
index 000000000000..e5e16cabaa0c
--- /dev/null
+++ b/www/iridium/files/patch-build_linux_libpci_BUILD.gn
@@ -0,0 +1,53 @@
+--- build/linux/libpci/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ build/linux/libpci/BUILD.gn
+@@ -3,20 +3,36 @@
+ # found in the LICENSE file.
+
+ import("//tools/generate_library_loader/generate_library_loader.gni")
++import("//build/config/linux/pkg_config.gni")
+
+-# This generates a target named "libpci".
+-generate_library_loader("libpci") {
+- name = "LibPciLoader"
+- output_h = "libpci.h"
+- output_cc = "libpci_loader.cc"
+- header = "<pci/pci.h>"
++declare_args() {
++ use_system_libpci = is_bsd
++}
+
+- functions = [
+- "pci_alloc",
+- "pci_init",
+- "pci_cleanup",
+- "pci_scan_bus",
+- "pci_fill_info",
+- "pci_lookup_name",
+- ]
++if (use_system_libpci) {
++ pkg_config("system_libpci") {
++ packages = [ "libpci" ]
++ }
++
++ source_set("libpci") {
++ public_configs = [ ":system_libpci" ]
++ }
++
++} else {
++ # This generates a target named "libpci".
++ generate_library_loader("libpci") {
++ name = "LibPciLoader"
++ output_h = "libpci.h"
++ output_cc = "libpci_loader.cc"
++ header = "<pci/pci.h>"
++
++ functions = [
++ "pci_alloc",
++ "pci_init",
++ "pci_cleanup",
++ "pci_scan_bus",
++ "pci_fill_info",
++ "pci_lookup_name",
++ ]
++ }
+ }
diff --git a/www/iridium/files/patch-build_secondary_third__party_nss_BUILD.gn b/www/iridium/files/patch-build_secondary_third__party_nss_BUILD.gn
new file mode 100644
index 000000000000..509d6110710b
--- /dev/null
+++ b/www/iridium/files/patch-build_secondary_third__party_nss_BUILD.gn
@@ -0,0 +1,11 @@
+--- build/secondary/third_party/nss/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ build/secondary/third_party/nss/BUILD.gn
+@@ -4,7 +4,7 @@
+
+ import("//build/config/linux/pkg_config.gni")
+
+-if (is_linux) {
++if (is_linux || is_bsd) {
+ # This is a dependency on NSS with no libssl. On Linux we use a built-in SSL
+ # library but the system NSS libraries. Non-Linux platforms using NSS use the
+ # hermetic one in //third_party/nss.
diff --git a/www/iridium/files/patch-build_toolchain_gcc__toolchain.gni b/www/iridium/files/patch-build_toolchain_gcc__toolchain.gni
new file mode 100644
index 000000000000..9c4b56c87139
--- /dev/null
+++ b/www/iridium/files/patch-build_toolchain_gcc__toolchain.gni
@@ -0,0 +1,52 @@
+--- build/toolchain/gcc_toolchain.gni.orig 2017-04-19 19:06:28 UTC
++++ build/toolchain/gcc_toolchain.gni
+@@ -12,6 +12,11 @@ import("//build/toolchain/clang_static_a
+ import("//build/toolchain/goma.gni")
+ import("//build/toolchain/toolchain.gni")
+
++declare_args() {
++ extra_cxxflags = ""
++ extra_ldflags = ""
++}
++
+ # This template defines a toolchain for something that works like gcc
+ # (including clang).
+ #
+@@ -483,10 +488,22 @@ template("clang_toolchain") {
+ }
+
+ gcc_toolchain(target_name) {
+- prefix = rebase_path("$clang_base_path/bin", root_build_dir)
+- cc = "$prefix/clang"
+- cxx = "$prefix/clang++"
+- ld = cxx
++ if (is_bsd) {
++ cc = "${toolprefix}clang39"
++ cxx = "${toolprefix}clang++39"
++ ld = cxx
++ readelf = "readelf"
++ ar = "${toolprefix}llvm-ar39"
++ nm = "${toolprefix}llvm-nm39"
++ } else {
++ prefix = rebase_path("$clang_base_path/bin", root_build_dir)
++ cc = "$prefix/clang"
++ cxx = "$prefix/clang++"
++ ld = cxx
++ readelf = "${toolprefix}readelf"
++ ar = "${toolprefix}ar"
++ nm = "${toolprefix}nm"
++ }
+
+ if (use_clang_static_analyzer) {
+ # Static analysis isn't supported under GOMA. See crbug.com/687245
+@@ -507,10 +524,6 @@ template("clang_toolchain") {
+ root_build_dir)
+ }
+
+- readelf = "${toolprefix}readelf"
+- ar = "${toolprefix}ar"
+- nm = "${toolprefix}nm"
+-
+ forward_variables_from(invoker, [ "strip" ])
+
+ toolchain_args = {
diff --git a/www/iridium/files/patch-build_toolchain_get__concurrent__links.py b/www/iridium/files/patch-build_toolchain_get__concurrent__links.py
new file mode 100644
index 000000000000..925ab0611e83
--- /dev/null
+++ b/www/iridium/files/patch-build_toolchain_get__concurrent__links.py
@@ -0,0 +1,17 @@
+--- build/toolchain/get_concurrent_links.py.orig 2017-04-19 19:06:28 UTC
++++ build/toolchain/get_concurrent_links.py
+@@ -45,6 +45,14 @@ def _GetTotalMemoryInBytes():
+ return int(subprocess.check_output(['sysctl', '-n', 'hw.memsize']))
+ except Exception:
+ return 0
++ elif sys.platform.startswith('freebsd'):
++ try:
++ avail_bytes = int(subprocess.check_output(['sysctl', '-n', 'hw.physmem']))
++ # With -fuse-lld it doesn't take a lot of ram, feel free to change that
++ # 1 * ... to needed amount
++ return max(1, avail_bytes / (1 * (2 ** 30))) # total / 4GB
++ except Exception:
++ return 1
+ # TODO(scottmg): Implement this for other platforms.
+ return 0
+
diff --git a/www/iridium/files/patch-build_toolchain_linux_BUILD.gn b/www/iridium/files/patch-build_toolchain_linux_BUILD.gn
new file mode 100644
index 000000000000..3a312520cc14
--- /dev/null
+++ b/www/iridium/files/patch-build_toolchain_linux_BUILD.gn
@@ -0,0 +1,24 @@
+--- build/toolchain/linux/BUILD.gn.orig 2017-04-19 19:06:28 UTC
++++ build/toolchain/linux/BUILD.gn
+@@ -6,7 +6,9 @@ import("//build/config/sysroot.gni")
+ import("//build/toolchain/gcc_toolchain.gni")
+
+ clang_toolchain("clang_arm") {
+- toolprefix = "arm-linux-gnueabihf-"
++ if (!is_bsd) {
++ toolprefix = "arm-linux-gnueabihf-"
++ }
+ toolchain_args = {
+ current_cpu = "arm"
+ current_os = "linux"
+@@ -14,7 +16,9 @@ clang_toolchain("clang_arm") {
+ }
+
+ clang_toolchain("clang_arm64") {
+- toolprefix = "aarch64-linux-gnu-"
++ if (!is_bsd) {
++ toolprefix = "aarch64-linux-gnu-"
++ }
+ toolchain_args = {
+ current_cpu = "arm64"
+ current_os = "linux"
diff --git a/www/iridium/files/patch-cc_layers_scrollbar__layer__impl__base.cc b/www/iridium/files/patch-cc_layers_scrollbar__layer__impl__base.cc
new file mode 100644
index 000000000000..de6cc4a4734d
--- /dev/null
+++ b/www/iridium/files/patch-cc_layers_scrollbar__layer__impl__base.cc
@@ -0,0 +1,13 @@
+--- cc/layers/scrollbar_layer_impl_base.cc.orig 2017-04-19 19:06:28 UTC
++++ cc/layers/scrollbar_layer_impl_base.cc
+@@ -174,8 +174,8 @@ gfx::Rect ScrollbarLayerImplBase::Comput
+ int thumb_offset = TrackStart();
+ if (maximum > 0) {
+ float ratio = clamped_current_pos / maximum;
+- float max_offset = track_length - thumb_length;
+- thumb_offset += static_cast<int>(ratio * max_offset);
++ float _max_offset = track_length - thumb_length;
++ thumb_offset += static_cast<int>(ratio * _max_offset);
+ }
+
+ float thumb_thickness_adjustment =
diff --git a/www/iridium/files/patch-cc_trees_property__tree.cc b/www/iridium/files/patch-cc_trees_property__tree.cc
new file mode 100644
index 000000000000..3aeb9ed21a0b
--- /dev/null
+++ b/www/iridium/files/patch-cc_trees_property__tree.cc
@@ -0,0 +1,20 @@
+--- cc/trees/property_tree.cc.orig 2017-04-19 19:06:28 UTC
++++ cc/trees/property_tree.cc
+@@ -1229,13 +1229,13 @@ gfx::ScrollOffset ScrollTree::MaxScrollO
+
+ gfx::Size clip_layer_bounds = scroll_clip_layer_bounds(scroll_node->id);
+
+- gfx::ScrollOffset max_offset(
++ gfx::ScrollOffset _max_offset(
+ scaled_scroll_bounds.width() - clip_layer_bounds.width(),
+ scaled_scroll_bounds.height() - clip_layer_bounds.height());
+
+- max_offset.Scale(1 / scale_factor);
+- max_offset.SetToMax(gfx::ScrollOffset());
+- return max_offset;
++ _max_offset.Scale(1 / scale_factor);
++ _max_offset.SetToMax(gfx::ScrollOffset());
++ return _max_offset;
+ }
+
+ void ScrollTree::OnScrollOffsetAnimated(int layer_id,
diff --git a/www/iridium/files/patch-chrome_BUILD.gn b/www/iridium/files/patch-chrome_BUILD.gn
new file mode 100644
index 000000000000..93bbc2c35cbf
--- /dev/null
+++ b/www/iridium/files/patch-chrome_BUILD.gn
@@ -0,0 +1,41 @@
+--- chrome/BUILD.gn.orig 2017-04-24 14:40:29 UTC
++++ chrome/BUILD.gn
+@@ -142,7 +142,7 @@ if (!is_android && !is_mac) {
+ data = [
+ "$root_out_dir/resources.pak",
+ ]
+- if (is_linux || is_win) {
++ if (is_linux || is_bsd || is_win) {
+ data += [
+ "$root_out_dir/chrome_100_percent.pak",
+ "$root_out_dir/locales/en-US.pak",
+@@ -221,10 +221,9 @@ if (!is_android && !is_mac) {
+ } else if (use_aura) {
+ # Non-Windows aura entrypoint.
+ sources += [ "app/chrome_exe_main_aura.cc" ]
+- ldflags = [ "-Wl,--no-keep-memory" ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [
+ "app/chrome_dll_resource.h",
+ "app/chrome_main.cc",
+@@ -254,7 +253,7 @@ if (!is_android && !is_mac) {
+ "//chrome/common:features",
+ ]
+
+- ldflags += [ "-pie", "-Wl,--no-keep-memory" ]
++ ldflags = [ "-pie" ]
+
+ if (use_pango || use_cairo) {
+ # Needed for chrome_main.cc initialization of libraries.
+@@ -1650,7 +1649,7 @@ if (enable_resource_whitelist_generation
+ }
+ }
+
+-if (is_linux) {
++if (is_linux || is_bsd) {
+ action("manpage") {
+ if (is_chrome_branded) {
+ name = "Google Chrome"
diff --git a/www/iridium/files/patch-chrome_app_chrome__command__ids.h b/www/iridium/files/patch-chrome_app_chrome__command__ids.h
new file mode 100644
index 000000000000..804bba997477
--- /dev/null
+++ b/www/iridium/files/patch-chrome_app_chrome__command__ids.h
@@ -0,0 +1,11 @@
+--- chrome/app/chrome_command_ids.h.orig 2017-04-19 19:06:28 UTC
++++ chrome/app/chrome_command_ids.h
+@@ -71,7 +71,7 @@
+ #define IDC_VISIT_DESKTOP_OF_LRU_USER_2 34049
+ #define IDC_VISIT_DESKTOP_OF_LRU_USER_3 34050
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #define IDC_USE_SYSTEM_TITLE_BAR 34051
+ #endif
+
diff --git a/www/iridium/files/patch-chrome_app_chrome__main__delegate.cc b/www/iridium/files/patch-chrome_app_chrome__main__delegate.cc
new file mode 100644
index 000000000000..80cc63aa457c
--- /dev/null
+++ b/www/iridium/files/patch-chrome_app_chrome__main__delegate.cc
@@ -0,0 +1,115 @@
+--- chrome/app/chrome_main_delegate.cc.orig 2017-04-19 19:06:28 UTC
++++ chrome/app/chrome_main_delegate.cc
+@@ -89,7 +89,7 @@
+ #include "chrome/app/chrome_crash_reporter_client.h"
+ #endif
+
+-#if !defined(DISABLE_NACL) && defined(OS_LINUX)
++#if !defined(DISABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD)
+ #include "components/nacl/common/nacl_paths.h"
+ #include "components/nacl/zygote/nacl_fork_delegate_linux.h"
+ #endif
+@@ -117,11 +117,11 @@
+ #include "ui/base/x/x11_util.h" // nogncheck
+ #endif
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ #include "components/crash/content/app/breakpad_linux.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/environment.h"
+ #endif
+
+@@ -163,7 +163,7 @@ base::LazyInstance<ChromeContentBrowserC
+ LAZY_INSTANCE_INITIALIZER;
+ #endif
+
+-#if defined(OS_POSIX)
++#if defined(OS_POSIX) && !defined(OS_BSD)
+ base::LazyInstance<ChromeCrashReporterClient>::Leaky g_chrome_crash_client =
+ LAZY_INSTANCE_INITIALIZER;
+ #endif
+@@ -280,7 +280,7 @@ static void AdjustLinuxOOMScore(const st
+ // and resources loaded.
+ bool SubprocessNeedsResourceBundle(const std::string& process_type) {
+ return
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // The zygote process opens the resources for the renderers.
+ process_type == switches::kZygoteProcess ||
+ #endif
+@@ -332,7 +332,7 @@ void HandleHelpSwitches(const base::Comm
+ }
+ #endif
+
+-#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ void SIGTERMProfilingShutdown(int signal) {
+ Profiling::Stop();
+ struct sigaction sigact;
+@@ -399,7 +399,7 @@ void InitializeUserDataDir(base::Command
+ std::string process_type =
+ command_line->GetSwitchValueASCII(switches::kProcessType);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_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.
+@@ -592,7 +592,7 @@ bool ChromeMainDelegate::BasicStartupCom
+ std::string format_str =
+ command_line.GetSwitchValueASCII(switches::kDiagnosticsFormat);
+ if (format_str == "machine") {
+- format = diagnostics::DiagnosticsWriter::MACHINE;
++ format = diagnostics::DiagnosticsWriter::THEMACHINE;
+ } else if (format_str == "log") {
+ format = diagnostics::DiagnosticsWriter::LOG;
+ } else {
+@@ -642,7 +642,7 @@ bool ChromeMainDelegate::BasicStartupCom
+ std::string format_str =
+ command_line.GetSwitchValueASCII(switches::kDiagnosticsFormat);
+ if (format_str == "machine") {
+- format = diagnostics::DiagnosticsWriter::MACHINE;
++ format = diagnostics::DiagnosticsWriter::THEMACHINE;
+ } else if (format_str == "human") {
+ format = diagnostics::DiagnosticsWriter::HUMAN;
+ } else {
+@@ -754,7 +754,7 @@ void ChromeMainDelegate::PreSandboxStart
+ std::string process_type =
+ command_line.GetSwitchValueASCII(switches::kProcessType);
+
+-#if defined(OS_POSIX)
++#if defined(OS_POSIX) && !defined(OS_BSD)
+ crash_reporter::SetCrashReporterClient(g_chrome_crash_client.Pointer());
+ #endif
+
+@@ -884,7 +884,7 @@ void ChromeMainDelegate::PreSandboxStart
+ chrome::InitializePDF();
+ #endif
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // Zygote needs to call InitCrashReporter() in RunZygote().
+ if (process_type != switches::kZygoteProcess) {
+ #if defined(OS_ANDROID)
+@@ -899,7 +899,7 @@ void ChromeMainDelegate::PreSandboxStart
+ breakpad::InitCrashReporter(process_type);
+ #endif // defined(OS_ANDROID)
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ // After all the platform Breakpads have been initialized, store the command
+ // line for crash reporting.
+@@ -1005,7 +1005,7 @@ bool ChromeMainDelegate::DelaySandboxIni
+ #endif
+ return process_type == switches::kRelauncherProcess;
+ }
+-#elif defined(OS_POSIX) && !defined(OS_ANDROID)
++#elif defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ void ChromeMainDelegate::ZygoteStarting(
+ std::vector<std::unique_ptr<content::ZygoteForkDelegate>>* delegates) {
+ #if defined(OS_CHROMEOS)
diff --git a/www/iridium/files/patch-chrome_app_chrome__main__delegate.h b/www/iridium/files/patch-chrome_app_chrome__main__delegate.h
new file mode 100644
index 000000000000..0d28e5dde319
--- /dev/null
+++ b/www/iridium/files/patch-chrome_app_chrome__main__delegate.h
@@ -0,0 +1,11 @@
+--- chrome/app/chrome_main_delegate.h.orig 2017-04-19 19:06:28 UTC
++++ chrome/app/chrome_main_delegate.h
+@@ -42,7 +42,7 @@ class ChromeMainDelegate : public conten
+ const std::string& process_type) override;
+ bool ShouldSendMachPort(const std::string& process_type) override;
+ bool DelaySandboxInitialization(const std::string& process_type) override;
+-#elif defined(OS_POSIX) && !defined(OS_ANDROID)
++#elif defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ void ZygoteStarting(std::vector<std::unique_ptr<content::ZygoteForkDelegate>>*
+ delegates) override;
+ void ZygoteForked() override;
diff --git a/www/iridium/files/patch-chrome_app_chromium__strings.grd b/www/iridium/files/patch-chrome_app_chromium__strings.grd
new file mode 100644
index 000000000000..492817705484
--- /dev/null
+++ b/www/iridium/files/patch-chrome_app_chromium__strings.grd
@@ -0,0 +1,11 @@
+--- chrome/app/chromium_strings.grd.orig 2017-04-24 14:40:26 UTC
++++ chrome/app/chromium_strings.grd
+@@ -891,7 +891,7 @@ Signing in anyway will merge browser inf
+ </message>
+
+ <!-- ProcessSingleton -->
+- <if expr="is_linux or is_macosx">
++ <if expr="is_linux or is_macosx or is_bsd">
+ <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
+ The profile appears to be in use by another browser process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). The browser has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch the browser.
+ </message>
diff --git a/www/iridium/files/patch-chrome_app_generated__resources.grd b/www/iridium/files/patch-chrome_app_generated__resources.grd
new file mode 100644
index 000000000000..327ea90a6468
--- /dev/null
+++ b/www/iridium/files/patch-chrome_app_generated__resources.grd
@@ -0,0 +1,38 @@
+--- chrome/app/generated_resources.grd.orig 2017-04-24 14:40:26 UTC
++++ chrome/app/generated_resources.grd
+@@ -6535,7 +6535,7 @@ Keep your key file in a safe place. You
+ <message name="IDS_FLAGS_FORCE_UI_DIRECTION_RTL" desc="Name for the option to force right-to-left UI direction mode.">
+ Right-to-left
+ </message>
+- <if expr="is_win or is_linux">
++ <if expr="is_win or is_linux or is_bsd">
+ <message name="IDS_FLAGS_ENABLE_INPUT_IME_API_NAME" desc="Name of the flag to enable che chrome.input.ime API.">
+ Enable Input IME API
+ </message>
+@@ -9629,7 +9629,7 @@ I don't think this site should be blocke
+ <message name="IDS_APPEARANCE_GROUP_NAME" desc="The title of the appearance group">
+ Appearance
+ </message>
+- <if expr="not is_linux or chromeos">
++ <if expr="not is_linux or not is_bsd or chromeos">
+ <message name="IDS_THEMES_GROUP_NAME" desc="The title of the themes group">
+ Themes
+ </message>
+@@ -9637,7 +9637,7 @@ I don't think this site should be blocke
+ <message name="IDS_THEMES_RESET_BUTTON" desc="The button to reset your theme">
+ Reset to default theme
+ </message>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_linux or is_bsd and not chromeos">
+ <message name="IDS_THEMES_GTK_BUTTON" desc="The button to choose GTK colors and icons as the current theme.">
+ Use GTK+ theme
+ </message>
+@@ -10903,7 +10903,7 @@ Tell us what happened exactly before you
+ Set as default
+ </message>
+
+- <if expr="is_linux and not chromeos">
++ <if expr="is_linux or is_bsd and not chromeos">
+ <message name="IDS_SHOW_WINDOW_DECORATIONS_MENU" desc="The menu entry text in the tab strip context menu. This toggles the system title bar and window borders (window decorations) on linux.">
+ Use system title bar and borders
+ </message>
diff --git a/www/iridium/files/patch-chrome_app_google__chrome__strings.grd b/www/iridium/files/patch-chrome_app_google__chrome__strings.grd
new file mode 100644
index 000000000000..40e0375e1a09
--- /dev/null
+++ b/www/iridium/files/patch-chrome_app_google__chrome__strings.grd
@@ -0,0 +1,11 @@
+--- chrome/app/google_chrome_strings.grd.orig 2017-04-24 14:40:26 UTC
++++ chrome/app/google_chrome_strings.grd
+@@ -892,7 +892,7 @@ Signing in anyway will merge Chrome info
+ </message>
+
+ <!-- ProcessSingleton -->
+- <if expr="is_linux or is_macosx">
++ <if expr="is_linux or is_macosx or is_bsd">
+ <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host.">
+ The profile appears to be in use by another Google Chrome process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chrome has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chrome.
+ </message>
diff --git a/www/iridium/files/patch-chrome_app_mash_mash__runner.cc b/www/iridium/files/patch-chrome_app_mash_mash__runner.cc
new file mode 100644
index 000000000000..29251db2112a
--- /dev/null
+++ b/www/iridium/files/patch-chrome_app_mash_mash__runner.cc
@@ -0,0 +1,11 @@
+--- chrome/app/mash/mash_runner.cc.orig 2017-04-19 19:06:28 UTC
++++ chrome/app/mash/mash_runner.cc
+@@ -263,7 +263,7 @@ int MashMain() {
+ // TODO(sky): wire this up correctly.
+ service_manager::InitializeLogging();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::AtExitManager exit_manager;
+ #endif
+
diff --git a/www/iridium/files/patch-chrome_app_resources_locale__settings.grd b/www/iridium/files/patch-chrome_app_resources_locale__settings.grd
new file mode 100644
index 000000000000..367c458bb099
--- /dev/null
+++ b/www/iridium/files/patch-chrome_app_resources_locale__settings.grd
@@ -0,0 +1,11 @@
+--- chrome/app/resources/locale_settings.grd.orig 2017-04-19 19:06:29 UTC
++++ chrome/app/resources/locale_settings.grd
+@@ -151,7 +151,7 @@
+ 55
+ </message>
+
+- <if expr="is_win or is_linux or chromeos">
++ <if expr="is_win or is_linux or chromeos or is_bsd">
+ <!-- The width of the ash/ChromeOS system tray menu in pixels. -->
+ <message name="IDS_SYSTEM_TRAY_MENU_BUBBLE_WIDTH_PIXELS" use_name_for_id="true">
+ 300
diff --git a/www/iridium/files/patch-chrome_app_settings__strings.grdp b/www/iridium/files/patch-chrome_app_settings__strings.grdp
new file mode 100644
index 000000000000..8a79a339e266
--- /dev/null
+++ b/www/iridium/files/patch-chrome_app_settings__strings.grdp
@@ -0,0 +1,20 @@
+--- chrome/app/settings_strings.grdp.orig 2017-04-19 19:06:29 UTC
++++ chrome/app/settings_strings.grdp
+@@ -240,7 +240,7 @@
+ <message name="IDS_SETTINGS_THEMES" desc="Name of the control which allows the user to get a theme for the browser.">
+ Themes
+ </message>
+- <if expr="is_linux and not chromeos">
++ <if expr="is_posix and not chromeos">
+ <message name="IDS_SETTINGS_SYSTEM_THEME" desc="Text of the label describing the system (GTK+) browser theme on Linux">
+ GTK+
+ </message>
+@@ -254,7 +254,7 @@
+ Use Classic
+ </message>
+ </if>
+- <if expr="not is_linux or chromeos">
++ <if expr="not is_posix or chromeos">
+ <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/iridium/files/patch-chrome_app_shutdown__signal__handlers__posix.cc b/www/iridium/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
new file mode 100644
index 000000000000..ed25b0f4cac3
--- /dev/null
+++ b/www/iridium/files/patch-chrome_app_shutdown__signal__handlers__posix.cc
@@ -0,0 +1,22 @@
+--- chrome/app/shutdown_signal_handlers_posix.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/app/shutdown_signal_handlers_posix.cc
+@@ -183,6 +183,11 @@ 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 FreeBSD,
++ // we request the default pthread stack size by specifying 0 here.
++ const size_t kShutdownDetectorThreadStackSize = 0;
++#else
+ #if !defined(ADDRESS_SANITIZER) && !defined(KEEP_SHADOW_STACKS)
+ const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2;
+ #else
+@@ -191,6 +196,7 @@ void InstallShutdownSignalHandlers(
+ // 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, shutdown_callback, task_runner);
+ // PlatformThread does not delete its delegate.
diff --git a/www/iridium/files/patch-chrome_browser_BUILD.gn b/www/iridium/files/patch-chrome_browser_BUILD.gn
new file mode 100644
index 000000000000..0b55b08678b1
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_BUILD.gn
@@ -0,0 +1,20 @@
+--- chrome/browser/BUILD.gn.orig 2017-04-24 14:40:28 UTC
++++ chrome/browser/BUILD.gn
+@@ -2219,7 +2219,7 @@ split_static_library("browser") {
+ deps += [ "//device/udev_linux" ]
+ }
+
+- if (is_linux && !is_chromeos) {
++ if ((is_linux || is_bsd) && !is_chromeos) {
+ deps += [ "//third_party/speech-dispatcher" ]
+ }
+
+@@ -3606,7 +3606,7 @@ split_static_library("browser") {
+ }
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ if (use_aura) {
+ deps += [ "//build/linux:fontconfig" ]
+ if (use_dbus) {
diff --git a/www/iridium/files/patch-chrome_browser_about__flags.cc b/www/iridium/files/patch-chrome_browser_about__flags.cc
new file mode 100644
index 000000000000..9a4ca2ae1c84
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_about__flags.cc
@@ -0,0 +1,34 @@
+--- chrome/browser/about_flags.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/about_flags.cc
+@@ -856,7 +856,7 @@ const FeatureEntry kFeatureEntries[] = {
+ kOsLinux | kOsCrOS | kOsWin | kOsAndroid,
+ ENABLE_DISABLE_VALUE_TYPE(switches::kEnableSmoothScrolling,
+ switches::kDisableSmoothScrolling)},
+-#if defined(USE_AURA) || defined(OS_LINUX)
++#if defined(USE_AURA) || defined(OS_LINUX) || defined(OS_BSD)
+ {"overlay-scrollbars", IDS_FLAGS_OVERLAY_SCROLLBARS_NAME,
+ IDS_FLAGS_OVERLAY_SCROLLBARS_DESCRIPTION,
+ // Uses the system preference on Mac (a different implementation).
+@@ -1374,11 +1374,11 @@ const FeatureEntry kFeatureEntries[] = {
+ ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTranslateNewUX,
+ switches::kDisableTranslateNewUX)},
+ #endif // OS_MACOSX
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ {"translate-2016q2-ui", IDS_FLAGS_TRANSLATE_2016Q2_UI_NAME,
+ IDS_FLAGS_TRANSLATE_2016Q2_UI_DESCRIPTION, kOsCrOS | kOsWin | kOsLinux,
+ FEATURE_VALUE_TYPE(translate::kTranslateUI2016Q2)},
+-#endif // OS_LINUX || OS_WIN || OS_CHROMEOS
++#endif // OS_LINUX || OS_WIN || OS_CHROMEOS || OS_BSD
+ {"translate-lang-by-ulp", IDS_FLAGS_TRANSLATE_LANGUAGE_BY_ULP_NAME,
+ IDS_FLAGS_TRANSLATE_LANGUAGE_BY_ULP_DESCRIPTION, kOsAll,
+ FEATURE_VALUE_TYPE(translate::kTranslateLanguageByULP)},
+@@ -1802,7 +1802,7 @@ const FeatureEntry kFeatureEntries[] = {
+ IDS_FLAGS_ENABLE_MATERIAL_DESIGN_EXTENSIONS_DESCRIPTION, kOsDesktop,
+ FEATURE_VALUE_TYPE(features::kMaterialDesignExtensions)},
+ #endif // ENABLE_EXTENSIONS
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ {"enable-input-ime-api", IDS_FLAGS_ENABLE_INPUT_IME_API_NAME,
+ IDS_FLAGS_ENABLE_INPUT_IME_API_DESCRIPTION, kOsWin | kOsLinux,
+ ENABLE_DISABLE_VALUE_TYPE(switches::kEnableInputImeAPI,
diff --git a/www/iridium/files/patch-chrome_browser_browser__process__impl.cc b/www/iridium/files/patch-chrome_browser_browser__process__impl.cc
new file mode 100644
index 000000000000..b5a9b406b9b6
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_browser__process__impl.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/browser_process_impl.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/browser_process_impl.cc
+@@ -171,7 +171,7 @@
+ #include "chrome/browser/media/webrtc/webrtc_log_uploader.h"
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/memory/tab_manager.h"
+ #endif
+
+@@ -789,7 +789,7 @@ gcm::GCMDriver* BrowserProcessImpl::gcm_
+
+ memory::TabManager* BrowserProcessImpl::GetTabManager() {
+ DCHECK(CalledOnValidThread());
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (!tab_manager_.get())
+ tab_manager_.reset(new memory::TabManager());
+ return tab_manager_.get();
diff --git a/www/iridium/files/patch-chrome_browser_browser__process__impl.h b/www/iridium/files/patch-chrome_browser_browser__process__impl.h
new file mode 100644
index 000000000000..aab065842384
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_browser__process__impl.h
@@ -0,0 +1,11 @@
+--- chrome/browser/browser_process_impl.h.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/browser_process_impl.h
+@@ -342,7 +342,7 @@ class BrowserProcessImpl : public Browse
+
+ std::unique_ptr<ChromeDeviceClient> device_client_;
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ // Any change to this #ifdef must be reflected as well in
+ // chrome/browser/memory/tab_manager_browsertest.cc
+ std::unique_ptr<memory::TabManager> tab_manager_;
diff --git a/www/iridium/files/patch-chrome_browser_browser__resources.grd b/www/iridium/files/patch-chrome_browser_browser__resources.grd
new file mode 100644
index 000000000000..979666f08c0c
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_browser__resources.grd
@@ -0,0 +1,11 @@
+--- chrome/browser/browser_resources.grd.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/browser_resources.grd
+@@ -383,7 +383,7 @@
+ <include name="IDR_ABOUT_VOICESEARCH_JS" file="resources\about_voicesearch.js" type="BINDATA" />
+ <include name="IDR_PLUGIN_DB_JSON" file="resources\plugin_metadata\plugins_chromeos.json" type="BINDATA" />
+ </if>
+- <if expr="desktop_linux or (is_android and enable_plugins)">
++ <if expr="desktop_linux or (is_android and enable_plugins) or is_bsd">
+ <include name="IDR_PLUGIN_DB_JSON" file="resources\plugin_metadata\plugins_linux.json" type="BINDATA" />
+ </if>
+ <if expr="is_android">
diff --git a/www/iridium/files/patch-chrome_browser_chrome__browser__main.cc b/www/iridium/files/patch-chrome_browser_chrome__browser__main.cc
new file mode 100644
index 000000000000..dbdcacf15ea8
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_chrome__browser__main.cc
@@ -0,0 +1,65 @@
+--- chrome/browser/chrome_browser_main.cc.orig 2017-04-24 14:40:28 UTC
++++ chrome/browser/chrome_browser_main.cc
+@@ -181,7 +181,7 @@
+ #include "chrome/browser/lifetime/application_lifetime.h"
+ #endif // defined(OS_ANDROID)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/first_run/upgrade_util_linux.h"
+ #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
+
+@@ -276,7 +276,7 @@
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD))
+ #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker.h"
+ #endif
+
+@@ -479,10 +479,10 @@ void RegisterComponentsForUpdate() {
+
+ #if !defined(OS_ANDROID)
+ RegisterPepperFlashComponent(cus);
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ RegisterSwiftShaderComponent(cus);
+ RegisterWidevineCdmComponent(cus);
+-#endif // !defined(OS_CHROMEOS)
++#endif // !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ #endif // !defined(OS_ANDROID)
+
+ #if !defined(DISABLE_NACL) && !defined(OS_ANDROID)
+@@ -764,7 +764,7 @@ void ChromeBrowserMainParts::SetupFieldT
+ field_trial_synchronizer_ = new FieldTrialSynchronizer();
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD))
+ metrics::DesktopSessionDurationTracker::Initialize();
+ #endif
+
+@@ -1194,11 +1194,11 @@ int ChromeBrowserMainParts::PreCreateThr
+ }
+ #endif // !defined(OS_ANDROID) && !defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Set the product channel for crash reports.
+ base::debug::SetCrashKeyValue(crash_keys::kChannel,
+ chrome::GetChannelString());
+-#endif // defined(OS_LINUX) || defined(OS_OPENBSD)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ // Initialize tracking synchronizer system.
+ tracking_synchronizer_ = new metrics::TrackingSynchronizer(
+@@ -1387,7 +1387,7 @@ void ChromeBrowserMainParts::PreBrowserS
+
+ // Start the tab manager here so that we give the most amount of time for the
+ // other services to start up before we start adjusting the oom priority.
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ g_browser_process->GetTabManager()->Start();
+ #endif
+
diff --git a/www/iridium/files/patch-chrome_browser_chrome__browser__main__linux.cc b/www/iridium/files/patch-chrome_browser_chrome__browser__main__linux.cc
new file mode 100644
index 000000000000..0cbc57b8466a
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_chrome__browser__main__linux.cc
@@ -0,0 +1,27 @@
+--- chrome/browser/chrome_browser_main_linux.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/chrome_browser_main_linux.cc
+@@ -77,12 +77,14 @@ void ChromeBrowserMainPartsLinux::PrePro
+ void ChromeBrowserMainPartsLinux::PostProfileInit() {
+ ChromeBrowserMainPartsPosix::PostProfileInit();
+
++#if !defined(OS_BSD)
+ g_browser_process->metrics_service()->RecordBreakpadRegistration(
+ breakpad::IsCrashReporterEnabled());
++#endif
+ }
+
+ void ChromeBrowserMainPartsLinux::PostMainMessageLoopStart() {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ bluez::DBusThreadManagerLinux::Initialize();
+ bluez::BluezDBusManager::Initialize(
+ bluez::DBusThreadManagerLinux::Get()->GetSystemBus(), false);
+@@ -92,7 +94,7 @@ void ChromeBrowserMainPartsLinux::PostMa
+ }
+
+ void ChromeBrowserMainPartsLinux::PostDestroyThreads() {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ bluez::BluezDBusManager::Shutdown();
+ bluez::DBusThreadManagerLinux::Shutdown();
+ #endif
diff --git a/www/iridium/files/patch-chrome_browser_chrome__browser__main__posix.cc b/www/iridium/files/patch-chrome_browser_chrome__browser__main__posix.cc
new file mode 100644
index 000000000000..ee7a9e57bb2d
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_chrome__browser__main__posix.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/chrome_browser_main_posix.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/chrome_browser_main_posix.cc
+@@ -134,7 +134,7 @@ void ChromeBrowserMainPartsPosix::PostMa
+ void ChromeBrowserMainPartsPosix::ShowMissingLocaleMessageBox() {
+ #if defined(OS_CHROMEOS)
+ NOTREACHED(); // Should not ever happen on ChromeOS.
+-#elif defined(OS_MACOSX)
++#elif defined(OS_MACOSX) || defined(OS_BSD)
+ // Not called on Mac because we load the locale files differently.
+ NOTREACHED();
+ #elif defined(USE_AURA)
diff --git a/www/iridium/files/patch-chrome_browser_chrome__content__browser__client.cc b/www/iridium/files/patch-chrome_browser_chrome__content__browser__client.cc
new file mode 100644
index 000000000000..9e2d66099384
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_chrome__content__browser__client.cc
@@ -0,0 +1,92 @@
+--- chrome/browser/chrome_content_browser_client.cc.orig 2017-04-24 14:40:25 UTC
++++ chrome/browser/chrome_content_browser_client.cc
+@@ -244,7 +244,7 @@
+ #include "mash/public/interfaces/launchable.mojom.h"
+ #include "services/service_manager/public/cpp/interface_factory.h"
+ #include "services/service_manager/public/interfaces/interface_provider_spec.mojom.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/chrome_browser_main_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "chrome/browser/android/app_hooks.h"
+@@ -265,7 +265,7 @@
+ #include "chrome/browser/webshare/share_service_impl.h"
+ #endif
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ #include "base/debug/leak_annotations.h"
+ #include "components/crash/content/app/breakpad_linux.h"
+ #include "components/crash/content/browser/crash_handler_host_linux.h"
+@@ -289,7 +289,7 @@
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux.h"
+ #endif
+
+@@ -700,7 +700,7 @@ bool CertMatchesFilter(const net::X509Ce
+ return false;
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ breakpad::CrashHandlerHostLinux* CreateCrashHandlerHost(
+ const std::string& process_type) {
+ base::FilePath dumps_path;
+@@ -1023,7 +1023,7 @@ content::BrowserMainParts* ChromeContent
+ main_parts = new ChromeBrowserMainPartsMac(parameters);
+ #elif defined(OS_CHROMEOS)
+ main_parts = new chromeos::ChromeBrowserMainPartsChromeos(parameters);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ main_parts = new ChromeBrowserMainPartsLinux(parameters);
+ #elif defined(OS_ANDROID)
+ main_parts = new ChromeBrowserMainPartsAndroid(parameters);
+@@ -1039,7 +1039,7 @@ content::BrowserMainParts* ChromeContent
+ // Construct additional browser parts. Stages are called in the order in
+ // which they are added.
+ #if defined(TOOLKIT_VIEWS)
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
+ main_parts->AddParts(new ChromeBrowserMainExtraPartsViewsLinux());
+ #else
+ main_parts->AddParts(new ChromeBrowserMainExtraPartsViews());
+@@ -1680,7 +1680,7 @@ void ChromeContentBrowserClient::AppendE
+ command_line->AppendSwitchASCII(switches::kMetricsClientID,
+ client_info->client_id);
+ }
+-#elif defined(OS_POSIX)
++#elif defined(OS_POSIX) && !defined(OS_BSD)
+ if (breakpad::IsCrashReporterEnabled()) {
+ std::string switch_value;
+ std::unique_ptr<metrics::ClientInfo> client_info =
+@@ -2972,7 +2972,7 @@ void ChromeContentBrowserClient::GetAddi
+ }
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+@@ -3001,7 +3001,7 @@ void ChromeContentBrowserClient::GetAddi
+ }
+ #endif // defined(OS_ANDROID)
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ base::string16 ChromeContentBrowserClient::GetAppContainerSidForSandboxType(
+@@ -3193,6 +3193,8 @@ void ChromeContentBrowserClient::Registe
+ base::Bind(&ForwardShareServiceRequest,
+ web_contents->GetJavaInterfaces()->GetWeakPtr()));
+ }
++#elif defined(OS_BSD)
++ NOTREACHED();
+ #else
+ if (AreExperimentalWebPlatformFeaturesEnabled() &&
+ base::FeatureList::IsEnabled(features::kWebPayments)) {
diff --git a/www/iridium/files/patch-chrome_browser_chrome__content__browser__client.h b/www/iridium/files/patch-chrome_browser_chrome__content__browser__client.h
new file mode 100644
index 000000000000..6767afaa862c
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_chrome__content__browser__client.h
@@ -0,0 +1,17 @@
+--- chrome/browser/chrome_content_browser_client.h.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/chrome_content_browser_client.h
+@@ -270,12 +270,12 @@ class ChromeContentBrowserClient : publi
+ content::RenderFrameHost* render_frame_host,
+ blink::WebPageVisibilityState* visibility_state) override;
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ void GetAdditionalMappedFilesForChildProcess(
+ const base::CommandLine& command_line,
+ int child_process_id,
+ content::FileDescriptorInfo* mappings) override;
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ #if defined(OS_WIN)
+ bool PreSpawnRenderer(sandbox::TargetPolicy* policy) override;
+ base::string16 GetAppContainerSidForSandboxType(
diff --git a/www/iridium/files/patch-chrome_browser_defaults.cc b/www/iridium/files/patch-chrome_browser_defaults.cc
new file mode 100644
index 000000000000..096ac2cfbef2
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_defaults.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/defaults.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/defaults.cc
+@@ -44,7 +44,7 @@ const bool kSyncAutoStarts = true;
+ const bool kSyncAutoStarts = false;
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ const bool kScrollEventChangesTab = true;
+ #else
+ const bool kScrollEventChangesTab = false;
diff --git a/www/iridium/files/patch-chrome_browser_diagnostics_diagnostics__writer.cc b/www/iridium/files/patch-chrome_browser_diagnostics_diagnostics__writer.cc
new file mode 100644
index 000000000000..f3c2b2ca59eb
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_diagnostics_diagnostics__writer.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/diagnostics/diagnostics_writer.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/diagnostics/diagnostics_writer.cc
+@@ -263,7 +263,7 @@ bool DiagnosticsWriter::WriteResult(bool
+ console_->SetColor(color);
+ console_->Write(base::ASCIIToUTF16(result));
+ }
+- if (format_ == MACHINE) {
++ if (format_ == THEMACHINE) {
+ return WriteInfoLine(base::StringPrintf(
+ "%03d %s (%s)", outcome_code, id.c_str(), extra.c_str()));
+ } else {
diff --git a/www/iridium/files/patch-chrome_browser_diagnostics_diagnostics__writer.h b/www/iridium/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
new file mode 100644
index 000000000000..f882fdc84433
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_diagnostics_diagnostics__writer.h
@@ -0,0 +1,11 @@
+--- chrome/browser/diagnostics/diagnostics_writer.h.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/diagnostics/diagnostics_writer.h
+@@ -19,7 +19,7 @@ class DiagnosticsWriter : public Diagnos
+ public:
+ // The type of formatting done by this writer.
+ enum FormatType {
+- MACHINE,
++ THEMACHINE,
+ LOG,
+ HUMAN
+ };
diff --git a/www/iridium/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc b/www/iridium/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
new file mode 100644
index 000000000000..472e818b082c
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/download/chrome_download_manager_delegate.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/download/chrome_download_manager_delegate.cc
+@@ -777,7 +777,7 @@ void ChromeDownloadManagerDelegate::OnDo
+ target_info->is_filetype_handled_safely)
+ DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
+
+-#if defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ if (item->GetOriginalMimeType() == "application/x-x509-user-cert")
+ DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true);
+ #endif
+@@ -792,7 +792,7 @@ void ChromeDownloadManagerDelegate::OnDo
+
+ bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile(
+ const base::FilePath& path) {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf"))) {
+ return !download_prefs_->ShouldOpenPdfInSystemReader();
+ }
diff --git a/www/iridium/files/patch-chrome_browser_download_download__commands.cc b/www/iridium/files/patch-chrome_browser_download_download__commands.cc
new file mode 100644
index 000000000000..60d885a1b817
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_download_download__commands.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/download/download_commands.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/download/download_commands.cc
+@@ -219,7 +219,7 @@ bool DownloadCommands::IsCommandChecked(
+ return download_item_->GetOpenWhenComplete() ||
+ download_crx_util::IsExtensionDownload(*download_item_);
+ case ALWAYS_OPEN_TYPE:
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (CanOpenPdfInSystemViewer()) {
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(
+ download_item_->GetBrowserContext());
+@@ -263,7 +263,7 @@ void DownloadCommands::ExecuteCommand(Co
+ bool is_checked = IsCommandChecked(ALWAYS_OPEN_TYPE);
+ DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(
+ download_item_->GetBrowserContext());
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (CanOpenPdfInSystemViewer()) {
+ prefs->SetShouldOpenPdfInSystemReader(!is_checked);
+ DownloadItemModel(download_item_)
+@@ -376,7 +376,7 @@ Browser* DownloadCommands::GetBrowser()
+ return browser_displayer.browser();
+ }
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ bool DownloadCommands::IsDownloadPdf() const {
+ base::FilePath path = download_item_->GetTargetFilePath();
+ return path.MatchesExtension(FILE_PATH_LITERAL(".pdf"));
+@@ -393,7 +393,7 @@ bool DownloadCommands::CanOpenPdfInSyste
+ return IsDownloadPdf() &&
+ (IsAdobeReaderDefaultPDFViewer() ? is_adobe_pdf_reader_up_to_date
+ : true);
+-#elif defined(OS_MACOSX) || defined(OS_LINUX)
++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return IsDownloadPdf();
+ #endif
+ }
diff --git a/www/iridium/files/patch-chrome_browser_download_download__commands.h b/www/iridium/files/patch-chrome_browser_download_download__commands.h
new file mode 100644
index 000000000000..dc8c7f43cf0c
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_download_download__commands.h
@@ -0,0 +1,12 @@
+--- chrome/browser/download/download_commands.h.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/download/download_commands.h
+@@ -43,7 +43,8 @@ class DownloadCommands {
+ void ExecuteCommand(Command command);
+
+ #if defined(OS_WIN) || defined(OS_LINUX) || \
+- (defined(OS_MACOSX) && !defined(OS_IOS))
++ defined(OS_BSD) || (defined(OS_MACOSX) && \
++ !defined(OS_IOS))
+ bool IsDownloadPdf() const;
+ bool CanOpenPdfInSystemViewer() const;
+ #endif
diff --git a/www/iridium/files/patch-chrome_browser_download_download__prefs.cc b/www/iridium/files/patch-chrome_browser_download_download__prefs.cc
new file mode 100644
index 000000000000..137a11af0adf
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_download_download__prefs.cc
@@ -0,0 +1,65 @@
+--- chrome/browser/download/download_prefs.cc.orig 2017-04-24 14:40:26 UTC
++++ chrome/browser/download/download_prefs.cc
+@@ -56,7 +56,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 defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::FilePath home_dir = base::GetHomeDir();
+ if (download_path == home_dir) {
+ return true;
+@@ -136,7 +136,7 @@ DownloadPrefs::DownloadPrefs(Profile* pr
+ GetDefaultDownloadDirectoryForProfile()));
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ should_open_pdf_in_system_reader_ =
+ prefs->GetBoolean(prefs::kOpenPdfDownloadInSystemReader);
+ #endif
+@@ -213,7 +213,7 @@ void DownloadPrefs::RegisterProfilePrefs
+ default_download_path);
+ registry->RegisterFilePathPref(prefs::kSaveFileDefaultDirectory,
+ default_download_path);
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ registry->RegisterBooleanPref(prefs::kOpenPdfDownloadInSystemReader, false);
+ #endif
+ }
+@@ -290,7 +290,7 @@ bool DownloadPrefs::IsDownloadPathManage
+ }
+
+ bool DownloadPrefs::IsAutoOpenUsed() const {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (ShouldOpenPdfInSystemReader())
+ return true;
+ #endif
+@@ -304,7 +304,7 @@ bool DownloadPrefs::IsAutoOpenEnabledBas
+ return false;
+ DCHECK(extension[0] == base::FilePath::kExtensionSeparator);
+ extension.erase(0, 1);
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ if (extension == FILE_PATH_LITERAL("pdf") && ShouldOpenPdfInSystemReader())
+ return true;
+ #endif
+@@ -338,7 +338,7 @@ void DownloadPrefs::DisableAutoOpenBased
+ SaveAutoOpenState();
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ void DownloadPrefs::SetShouldOpenPdfInSystemReader(bool should_open) {
+ if (should_open_pdf_in_system_reader_ == should_open)
+ return;
+@@ -359,7 +359,7 @@ bool DownloadPrefs::ShouldOpenPdfInSyste
+ #endif
+
+ void DownloadPrefs::ResetAutoOpen() {
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ SetShouldOpenPdfInSystemReader(false);
+ #endif
+ auto_open_.clear();
diff --git a/www/iridium/files/patch-chrome_browser_download_download__prefs.h b/www/iridium/files/patch-chrome_browser_download_download__prefs.h
new file mode 100644
index 000000000000..fb35df5dcdc1
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_download_download__prefs.h
@@ -0,0 +1,20 @@
+--- chrome/browser/download/download_prefs.h.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/download/download_prefs.h
+@@ -78,7 +78,7 @@ class DownloadPrefs {
+ // Disables auto-open based on file extension.
+ void DisableAutoOpenBasedOnExtension(const base::FilePath& file_name);
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_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);
+@@ -109,7 +109,7 @@ class DownloadPrefs {
+ AutoOpenCompareFunctor> AutoOpenSet;
+ AutoOpenSet auto_open_;
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ bool should_open_pdf_in_system_reader_;
+ #endif
+
diff --git a/www/iridium/files/patch-chrome_browser_download_download__query.cc b/www/iridium/files/patch-chrome_browser_download_download__query.cc
new file mode 100644
index 000000000000..9bc543bcb3f6
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_download_download__query.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/download/download_query.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/download/download_query.cc
+@@ -27,7 +27,11 @@
+ #include "components/url_formatter/url_formatter.h"
+ #include "content/public/browser/content_browser_client.h"
+ #include "content/public/browser/download_item.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ using content::DownloadDangerType;
diff --git a/www/iridium/files/patch-chrome_browser_download_download__shelf__context__menu.cc b/www/iridium/files/patch-chrome_browser_download_download__shelf__context__menu.cc
new file mode 100644
index 000000000000..e06e08c55e23
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_download_download__shelf__context__menu.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/download/download_shelf_context_menu.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/download/download_shelf_context_menu.cc
+@@ -127,7 +127,7 @@ base::string16 DownloadShelfContextMenu:
+ : IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS;
+ break;
+ }
+-#elif defined(OS_MACOSX) || defined(OS_LINUX)
++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (can_open_pdf_in_system_viewer) {
+ id = IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS;
+ break;
diff --git a/www/iridium/files/patch-chrome_browser_extensions_BUILD.gn b/www/iridium/files/patch-chrome_browser_extensions_BUILD.gn
new file mode 100644
index 000000000000..1b121b49fe31
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_extensions_BUILD.gn
@@ -0,0 +1,24 @@
+--- chrome/browser/extensions/BUILD.gn.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/extensions/BUILD.gn
+@@ -1040,7 +1040,7 @@ static_library("extensions") {
+ sources -= [ "global_shortcut_listener_ozone.cc" ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ deps += [ "//build/linux:fontconfig" ]
+
+ if (use_dbus) {
+@@ -1133,6 +1133,12 @@ static_library("extensions") {
+ defines += [ "ENABLE_HOTWORDING" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "api/image_writer_private/removable_storage_provider_linux.cc",
++ ]
++ }
++
+ if (enable_service_discovery) {
+ sources += [
+ "api/mdns/dns_sd_delegate.cc",
diff --git a/www/iridium/files/patch-chrome_browser_extensions_activity__log_activity__log.cc b/www/iridium/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
new file mode 100644
index 000000000000..7de12bcb95d0
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_extensions_activity__log_activity__log.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/extensions/activity_log/activity_log.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/extensions/activity_log/activity_log.cc
+@@ -48,7 +48,11 @@
+ #include "extensions/common/extension.h"
+ #include "extensions/common/extension_messages.h"
+ #include "extensions/common/one_shot_event.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ namespace constants = activity_log_constants;
diff --git a/www/iridium/files/patch-chrome_browser_extensions_api_image__writer__private_image__writer__private__api.cc b/www/iridium/files/patch-chrome_browser_extensions_api_image__writer__private_image__writer__private__api.cc
new file mode 100644
index 000000000000..ea797b94f446
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_extensions_api_image__writer__private_image__writer__private__api.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/extensions/api/image_writer_private/image_writer_private_api.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/extensions/api/image_writer_private/image_writer_private_api.cc
+@@ -167,10 +167,12 @@ ImageWriterPrivateListRemovableStorageDe
+ }
+
+ bool ImageWriterPrivateListRemovableStorageDevicesFunction::RunAsync() {
++#if !defined(OS_FREEBSD)
+ RemovableStorageProvider::GetAllDevices(
+ base::Bind(
+ &ImageWriterPrivateListRemovableStorageDevicesFunction::OnDeviceListReady,
+ this));
++#endif
+ return true;
+ }
+
diff --git a/www/iridium/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h b/www/iridium/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h
new file mode 100644
index 000000000000..2983ece57d61
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/api/input_ime/input_ime_api.h.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/extensions/api/input_ime/input_ime_api.h
+@@ -28,7 +28,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.h"
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api_nonchromeos.h"
+ #endif // defined(OS_CHROMEOS)
+
diff --git a/www/iridium/files/patch-chrome_browser_extensions_api_messaging_message__service.cc b/www/iridium/files/patch-chrome_browser_extensions_api_messaging_message__service.cc
new file mode 100644
index 000000000000..03706ca1408a
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_extensions_api_messaging_message__service.cc
@@ -0,0 +1,35 @@
+--- chrome/browser/extensions/api/messaging/message_service.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/extensions/api/messaging/message_service.cc
+@@ -106,7 +106,7 @@ MessageService::PolicyPermission Message
+
+ const char kReceivingEndDoesntExistError[] =
+ "Could not establish connection. Receiving end does not exist.";
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ const char kMissingPermissionError[] =
+ "Access to native messaging requires nativeMessaging permission.";
+ const char kProhibitedByPoliciesError[] =
+@@ -383,7 +383,7 @@ void MessageService::OpenChannelToNative
+ if (!source)
+ return;
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ content::WebContents* web_contents =
+ content::WebContents::FromRenderFrameHost(source);
+ ExtensionWebContentsObserver* extension_web_contents_observer =
+@@ -446,12 +446,12 @@ void MessageService::OpenChannelToNative
+ channel->opener->IncrementLazyKeepaliveCount();
+
+ AddChannel(std::move(channel), receiver_port_id);
+-#else // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX))
++#else // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD))
+ const char kNativeMessagingNotSupportedError[] =
+ "Native Messaging is not supported on this platform.";
+ DispatchOnDisconnect(
+ source, receiver_port_id, kNativeMessagingNotSupportedError);
+-#endif // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX))
++#endif // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD))
+ }
+
+ void MessageService::OpenChannelToTab(int source_process_id,
diff --git a/www/iridium/files/patch-chrome_browser_extensions_api_music__manager__private_device__id__linux.cc b/www/iridium/files/patch-chrome_browser_extensions_api_music__manager__private_device__id__linux.cc
new file mode 100644
index 000000000000..f8ed5105f6ea
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_extensions_api_music__manager__private_device__id__linux.cc
@@ -0,0 +1,66 @@
+--- chrome/browser/extensions/api/music_manager_private/device_id_linux.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/extensions/api/music_manager_private/device_id_linux.cc
+@@ -4,6 +4,10 @@
+
+ #include "chrome/browser/extensions/api/music_manager_private/device_id.h"
+
++#if defined(OS_FREEBSD)
++#include <sys/types.h>
++#include <net/if_dl.h>
++#endif
+ #include <ifaddrs.h>
+ #include <net/if.h>
+ #include <stddef.h>
+@@ -105,11 +109,33 @@ class MacAddressProcessor {
+ const char* const prefixes[],
+ size_t prefixes_count) {
+ const int MAC_LENGTH = 6;
++#if defined(OS_FREEBSD)
++ struct ifaddrs *ifap, *ifinfo;
++#else
+ struct ifreq ifinfo;
++#endif
+
+ memset(&ifinfo, 0, sizeof(ifinfo));
+- strncpy(ifinfo.ifr_name, ifaddr->ifa_name, sizeof(ifinfo.ifr_name) - 1);
+
++#if defined(OS_FREEBSD)
++ int result = getifaddrs(&ifap);
++ if (result != 0)
++ return true;
++ result = 1; // no MAC found yet
++ for (ifinfo = ifap; ifinfo != NULL; ifinfo = ifinfo->ifa_next) {
++ struct sockaddr* sa = ifinfo->ifa_addr;
++ if (sa->sa_family == AF_LINK &&
++ !strncmp(ifinfo->ifa_name, ifaddr->ifa_name,
++ sizeof(ifinfo->ifa_name) - 1)) {
++ result = 0;
++ break;
++ }
++ }
++
++ char mac_address[6];
++ strncpy(mac_address, (const char*)LLADDR((struct sockaddr_dl*)ifinfo->ifa_addr), sizeof(mac_address));
++#else
++ strncpy(ifinfo.ifr_name, ifaddr->ifa_name, sizeof(ifinfo.ifr_name) - 1);
+ int sd = socket(AF_INET, SOCK_DGRAM, 0);
+ int result = ioctl(sd, SIOCGIFHWADDR, &ifinfo);
+ close(sd);
+@@ -119,11 +145,17 @@ class MacAddressProcessor {
+
+ const char* mac_address =
+ static_cast<const char*>(ifinfo.ifr_hwaddr.sa_data);
++#endif
+ if (!is_valid_mac_address_.Run(mac_address, MAC_LENGTH))
+ return true;
+
++#if defined(OS_FREEBSD)
++ if (!IsValidPrefix(ifinfo->ifa_name, prefixes, prefixes_count))
++ return true;
++#else
+ if (!IsValidPrefix(ifinfo.ifr_name, prefixes, prefixes_count))
+ return true;
++#endif
+
+ // Got one!
+ found_mac_address_ =
diff --git a/www/iridium/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc b/www/iridium/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc
new file mode 100644
index 000000000000..9c87dd54d20a
--- /dev/null
+++ b/www/iridium/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 2017-04-19 19:06:29 UTC
++++ chrome/browser/extensions/api/settings_private/prefs_util.cc
+@@ -83,7 +83,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil
+ settings_private::PrefType::PREF_TYPE_BOOLEAN;
+ (*s_whitelist)[bookmarks::prefs::kShowBookmarkBar] =
+ settings_private::PrefType::PREF_TYPE_BOOLEAN;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ (*s_whitelist)[::prefs::kUseCustomChromeFrame] =
+ settings_private::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
+@@ -93,7 +93,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil
+ // Appearance settings.
+ (*s_whitelist)[::prefs::kCurrentThemeID] =
+ settings_private::PrefType::PREF_TYPE_STRING;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ (*s_whitelist)[::prefs::kUsesSystemTheme] =
+ settings_private::PrefType::PREF_TYPE_BOOLEAN;
+ #endif
diff --git a/www/iridium/files/patch-chrome_browser_extensions_bookmark__app__helper.cc b/www/iridium/files/patch-chrome_browser_extensions_bookmark__app__helper.cc
new file mode 100644
index 000000000000..9a5eb095cbb4
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_extensions_bookmark__app__helper.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/extensions/bookmark_app_helper.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/extensions/bookmark_app_helper.cc
+@@ -721,7 +721,7 @@ void BookmarkAppHelper::FinishInstallati
+ #if !defined(OS_MACOSX)
+ #if !defined(USE_ASH)
+ web_app::ShortcutLocations creation_locations;
+-#if defined(OS_LINUX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ creation_locations.on_desktop = true;
+ #else
+ creation_locations.on_desktop = false;
diff --git a/www/iridium/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc b/www/iridium/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc
new file mode 100644
index 000000000000..6ec1bd998080
--- /dev/null
+++ b/www/iridium/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 2017-04-19 19:06:29 UTC
++++ chrome/browser/extensions/browser_context_keyed_service_factories.cc
+@@ -63,7 +63,7 @@
+ #include "chrome/browser/chromeos/extensions/media_player_api.h"
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
+ #include "chrome/browser/extensions/api/log_private/log_private_api.h"
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+ #include "chrome/browser/extensions/api/input_ime/input_ime_api.h"
+ #endif
+
+@@ -107,7 +107,7 @@ void EnsureBrowserContextKeyedServiceFac
+ #if defined(OS_CHROMEOS)
+ extensions::InputImeAPI::GetFactoryInstance();
+ extensions::InputMethodAPI::GetFactoryInstance();
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) && !defined(OS_BSD)
+ extensions::InputImeAPI::GetFactoryInstance();
+ #endif
+ extensions::LanguageSettingsPrivateDelegateFactory::GetInstance();
diff --git a/www/iridium/files/patch-chrome_browser_extensions_external__provider__impl.cc b/www/iridium/files/patch-chrome_browser_extensions_external__provider__impl.cc
new file mode 100644
index 000000000000..253b102ee206
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_extensions_external__provider__impl.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/extensions/external_provider_impl.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/extensions/external_provider_impl.cc
+@@ -638,7 +638,7 @@ void ExternalProviderImpl::CreateExterna
+ Manifest::EXTERNAL_PREF, Manifest::EXTERNAL_PREF_DOWNLOAD,
+ oem_extension_creation_flags));
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ if (!profile->IsLegacySupervised()) {
+ provider_list->push_back(base::MakeUnique<ExternalProviderImpl>(
+ service,
+@@ -664,7 +664,7 @@ void ExternalProviderImpl::CreateExterna
+ bundled_extension_creation_flags));
+
+ // Define a per-user source of external extensions.
+-#if defined(OS_MACOSX) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD))
++#if defined(OS_MACOSX) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(CHROMIUM_BUILD))
+ provider_list->push_back(base::MakeUnique<ExternalProviderImpl>(
+ service, new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS,
+ ExternalPrefLoader::NONE, nullptr),
diff --git a/www/iridium/files/patch-chrome_browser_first__run_first__run__internal__posix.cc b/www/iridium/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
new file mode 100644
index 000000000000..559e964d746f
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_first__run_first__run__internal__posix.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/first_run/first_run_internal_posix.cc.orig 2017-04-24 14:40:29 UTC
++++ chrome/browser/first_run/first_run_internal_posix.cc
+@@ -25,7 +25,7 @@ namespace first_run {
+ namespace internal {
+
+ void DoPostImportPlatformSpecificTasks(Profile* profile) {
+-#if !defined(OS_CHROMEOS)
++#if !defined(OS_CHROMEOS) && !defined(OS_BSD)
+ base::FilePath local_state_path;
+ PathService::Get(chrome::FILE_LOCAL_STATE, &local_state_path);
+ bool local_state_file_exists = base::PathExists(local_state_path);
diff --git a/www/iridium/files/patch-chrome_browser_gpu_gl__string__manager.cc b/www/iridium/files/patch-chrome_browser_gpu_gl__string__manager.cc
new file mode 100644
index 000000000000..8cd5dbb55565
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_gpu_gl__string__manager.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/gpu/gl_string_manager.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/gpu/gl_string_manager.cc
+@@ -33,7 +33,7 @@ GLStringManager::~GLStringManager() {
+
+ void GLStringManager::Initialize() {
+ // On MacOSX or Windows, preliminary GPUInfo is enough.
+-#if defined(OS_LINUX)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+ // We never remove this observer from GpuDataManager.
+ content::GpuDataManager::GetInstance()->AddObserver(this);
+
diff --git a/www/iridium/files/patch-chrome_browser_interstitials_chrome__controller__client.cc b/www/iridium/files/patch-chrome_browser_interstitials_chrome__controller__client.cc
new file mode 100644
index 000000000000..0a8e0dd378e4
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_interstitials_chrome__controller__client.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/interstitials/chrome_controller_client.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/interstitials/chrome_controller_client.cc
+@@ -46,7 +46,7 @@ void LaunchDateAndTimeSettingsOnFileThre
+ #if defined(OS_ANDROID)
+ chrome::android::OpenDateAndTimeSettings();
+
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ struct ClockCommand {
+ const char* const pathname;
+ const char* const argument;
+@@ -131,7 +131,7 @@ ChromeControllerClient::~ChromeControlle
+
+ bool ChromeControllerClient::CanLaunchDateAndTimeSettings() {
+ #if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_LINUX) || \
+- defined(OS_MACOSX) || defined(OS_WIN)
++ defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ return true;
+ #else
+ return false;
diff --git a/www/iridium/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc b/www/iridium/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc
new file mode 100644
index 000000000000..b768a3c18f5c
--- /dev/null
+++ b/www/iridium/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 2017-04-19 19:06:29 UTC
++++ chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc
+@@ -37,10 +37,12 @@ void MTPDeviceMapService::RegisterMTPFil
+ // 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_FREEBSD)
+ CreateMTPDeviceAsyncDelegate(
+ device_location, read_only,
+ base::Bind(&MTPDeviceMapService::AddAsyncDelegate,
+ base::Unretained(this), device_location, read_only));
++#endif
+ mtp_device_usage_map_[key] = 0;
+ }
+
diff --git a/www/iridium/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc b/www/iridium/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
new file mode 100644
index 000000000000..0806713aab5b
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/media_galleries/media_file_system_registry.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/media_galleries/media_file_system_registry.cc
+@@ -758,7 +758,10 @@ class MediaFileSystemRegistry::MediaFile
+ // 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/iridium/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc b/www/iridium/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
new file mode 100644
index 000000000000..4ad76ac610ec
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/media/webrtc/webrtc_log_uploader.cc
+@@ -343,6 +343,8 @@ void WebRtcLogUploader::SetupMultipart(
+ const char product[] = "Chrome_Android";
+ #elif defined(OS_CHROMEOS)
+ const char product[] = "Chrome_ChromeOS";
++#elif defined(OS_FREEBSD)
++ const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/www/iridium/files/patch-chrome_browser_memory__details.cc b/www/iridium/files/patch-chrome_browser_memory__details.cc
new file mode 100644
index 000000000000..760e08c52aed
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_memory__details.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/memory_details.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/memory_details.cc
+@@ -35,7 +35,7 @@
+ #include "extensions/features/features.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include "content/public/browser/zygote_host_linux.h"
+ #endif
+
+@@ -337,7 +337,7 @@ void MemoryDetails::CollectChildInfoOnUI
+ process.titles.push_back(title);
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ if (content::ZygoteHost::GetInstance()->IsZygotePid(process.pid)) {
+ process.process_type = content::PROCESS_TYPE_ZYGOTE;
+ }
diff --git a/www/iridium/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc b/www/iridium/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
new file mode 100644
index 000000000000..ddb052046e13
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc
@@ -0,0 +1,18 @@
+--- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc
+@@ -42,12 +42,14 @@
+
+ #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ #include <gnu/libc-version.h>
++#endif
+
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ #include "base/version.h"
+ #if defined(USE_X11)
+ #include "ui/base/x/x11_util.h"
+ #endif
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif
+
+ #if defined(USE_OZONE) || defined(USE_X11)
+ #include "ui/events/devices/input_device_event_observer.h"
diff --git a/www/iridium/files/patch-chrome_browser_net_async__dns__field__trial.cc b/www/iridium/files/patch-chrome_browser_net_async__dns__field__trial.cc
new file mode 100644
index 000000000000..d3bfbb0e9470
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_net_async__dns__field__trial.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/net/async_dns_field_trial.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/net/async_dns_field_trial.cc
+@@ -61,7 +61,7 @@ void HistogramPrefSource(PrefSource sour
+ } // namespace
+
+ bool ConfigureAsyncDnsFieldTrial() {
+-#if defined(OS_CHROMEOS) || defined(OS_MACOSX)
++#if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_BSD)
+ const bool kDefault = true;
+ #else
+ const bool kDefault = false;
diff --git a/www/iridium/files/patch-chrome_browser_notifications_message__center__notification__manager.cc b/www/iridium/files/patch-chrome_browser_notifications_message__center__notification__manager.cc
new file mode 100644
index 000000000000..d96e823d99d0
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_notifications_message__center__notification__manager.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/notifications/message_center_notification_manager.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/notifications/message_center_notification_manager.cc
+@@ -63,7 +63,7 @@ MessageCenterNotificationManager::Messag
+ base::MakeUnique<FullscreenNotificationBlocker>(message_center));
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) \
+- || (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ // On Windows, Linux and Mac, the notification manager owns the tray icon and
+ // views.Other platforms have global ownership and Create will return NULL.
+ tray_.reset(message_center::CreateMessageCenterTray());
diff --git a/www/iridium/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc b/www/iridium/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
new file mode 100644
index 000000000000..beef5efc4513
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/password_manager/chrome_password_manager_client.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/password_manager/chrome_password_manager_client.cc
+@@ -62,7 +62,11 @@
+ #include "net/base/url_util.h"
+ #include "net/http/transport_security_state.h"
+ #include "net/url_request/url_request_context.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ #if defined(OS_ANDROID)
+ #include "chrome/browser/android/tab_android.h"
diff --git a/www/iridium/files/patch-chrome_browser_platform__util.h b/www/iridium/files/patch-chrome_browser_platform__util.h
new file mode 100644
index 000000000000..89545d2b0b86
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_platform__util.h
@@ -0,0 +1,11 @@
+--- chrome/browser/platform_util.h.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/platform_util.h
+@@ -40,7 +40,7 @@ enum OpenOperationResult {
+ enum OpenItemType {
+ OPEN_FILE,
+ OPEN_FOLDER,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ SHOW_ITEM_IN_FOLDER
+ #endif
+ };
diff --git a/www/iridium/files/patch-chrome_browser_plugins_plugins__resource__service.cc b/www/iridium/files/patch-chrome_browser_plugins_plugins__resource__service.cc
new file mode 100644
index 000000000000..9934b64489f9
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_plugins_plugins__resource__service.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/plugins/plugins_resource_service.cc.orig 2017-04-24 14:40:27 UTC
++++ chrome/browser/plugins/plugins_resource_service.cc
+@@ -31,7 +31,7 @@ GURL GetPluginsServerURL() {
+ std::string filename;
+ #if defined(OS_WIN)
+ filename = "plugins_win.json";
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ filename = "plugins_linux.json";
+ #elif defined(OS_MACOSX)
+ filename = "plugins_mac.json";
diff --git a/www/iridium/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc b/www/iridium/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc
new file mode 100644
index 000000000000..1b61eb9a6382
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/policy/policy_prefs_browsertest.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/policy/policy_prefs_browsertest.cc
+@@ -180,6 +180,8 @@ class PolicyTestCase {
+ const std::string os("chromeos");
+ #elif defined(OS_LINUX)
+ const std::string os("linux");
++#elif defined(OS_FREEBSD)
++ const std::string os("freebsd");
+ #else
+ #error "Unknown platform"
+ #endif
diff --git a/www/iridium/files/patch-chrome_browser_process__singleton__posix.cc b/www/iridium/files/patch-chrome_browser_process__singleton__posix.cc
new file mode 100644
index 000000000000..f6752e3b9774
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_process__singleton__posix.cc
@@ -0,0 +1,34 @@
+--- chrome/browser/process_singleton_posix.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/process_singleton_posix.cc
+@@ -93,11 +93,11 @@
+ #include "net/base/network_interfaces.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/process_singleton_dialog_linux.h"
+ #endif
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/views/linux_ui/linux_ui.h"
+ #endif
+
+@@ -321,7 +321,7 @@ bool DisplayProfileInUseError(const base
+ if (g_disable_prompt)
+ return false;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::string16 relaunch_button_text = l10n_util::GetStringUTF16(
+ IDS_PROFILE_IN_USE_LINUX_RELAUNCH);
+ return ShowProcessSingletonDialog(error, relaunch_button_text);
+@@ -855,7 +855,7 @@ ProcessSingleton::NotifyResult ProcessSi
+ // The other process is shutting down, it's safe to start a new process.
+ return PROCESS_NONE;
+ } else if (strncmp(buf, kACKToken, arraysize(kACKToken) - 1) == 0) {
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Likely NULL in unit tests.
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui)
diff --git a/www/iridium/files/patch-chrome_browser_profiles_profile__impl__io__data.cc b/www/iridium/files/patch-chrome_browser_profiles_profile__impl__io__data.cc
new file mode 100644
index 000000000000..ab79228c1947
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_profiles_profile__impl__io__data.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/profiles/profile_impl_io_data.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/profiles/profile_impl_io_data.cc
+@@ -103,7 +103,7 @@ net::BackendType ChooseCacheBackendType(
+ }
+ #endif // #if !defined(OS_ANDROID)
+
+-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ return net::CACHE_BACKEND_SIMPLE;
+ #else
+ return net::CACHE_BACKEND_BLOCKFILE;
diff --git a/www/iridium/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc b/www/iridium/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
new file mode 100644
index 000000000000..139aab791594
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/renderer_context_menu/render_view_context_menu.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/renderer_context_menu/render_view_context_menu.cc
+@@ -1390,7 +1390,7 @@ void RenderViewContextMenu::AppendEditab
+ // 'Undo' and 'Redo' for text input with no suggestions and no text selected.
+ // We make an exception for OS X as context clicking will select the closest
+ // word. In this case both items are always shown.
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_UNDO,
+ IDS_CONTENT_CONTEXT_UNDO);
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_REDO,
+@@ -1428,7 +1428,7 @@ void RenderViewContextMenu::AppendLangua
+ if (!use_spelling)
+ return;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS,
+ IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS);
+ #else
+@@ -1666,7 +1666,7 @@ bool RenderViewContextMenu::IsCommandIdE
+ case IDC_CHECK_SPELLING_WHILE_TYPING:
+ return prefs->GetBoolean(spellcheck::prefs::kEnableSpellcheck);
+
+-#if !defined(OS_MACOSX) && defined(OS_POSIX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD) && defined(OS_POSIX)
+ // TODO(suzhe): this should not be enabled for password fields.
+ case IDC_INPUT_METHODS_MENU:
+ return true;
diff --git a/www/iridium/files/patch-chrome_browser_renderer__preferences__util.cc b/www/iridium/files/patch-chrome_browser_renderer__preferences__util.cc
new file mode 100644
index 000000000000..e7ba7369bb9d
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_renderer__preferences__util.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/renderer_preferences_util.cc.orig 2017-04-19 19:06:29 UTC
++++ chrome/browser/renderer_preferences_util.cc
+@@ -20,7 +20,7 @@
+ #include "third_party/WebKit/public/public_features.h"
+ #include "third_party/skia/include/core/SkColor.h"
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ #include "ui/gfx/font_render_params.h"
+ #endif
+
+@@ -32,7 +32,7 @@
+ #include "ui/base/cocoa/defaults_utils.h"
+ #endif
+
+-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "chrome/browser/themes/theme_service.h"
+ #include "chrome/browser/themes/theme_service_factory.h"
+ #include "ui/views/linux_ui/linux_ui.h"
+@@ -134,7 +134,7 @@ void UpdateFromSystemSettings(content::R
+ prefs->caret_blink_interval = interval.InSecondsF();
+ #endif
+
+-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ views::LinuxUI* linux_ui = views::LinuxUI::instance();
+ if (linux_ui) {
+ if (ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme()) {
+@@ -156,7 +156,7 @@ void UpdateFromSystemSettings(content::R
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_BSD)
+ CR_DEFINE_STATIC_LOCAL(const gfx::FontRenderParams, params,
+ (gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), NULL)));
+ prefs->should_antialias_text = params.antialiasing;
diff --git a/www/iridium/files/patch-chrome_browser_resources_safe__browsing_BUILD.gn b/www/iridium/files/patch-chrome_browser_resources_safe__browsing_BUILD.gn
new file mode 100644
index 000000000000..bfe4f2cdde28
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_resources_safe__browsing_BUILD.gn
@@ -0,0 +1,11 @@
+--- chrome/browser/resources/safe_browsing/BUILD.gn.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/resources/safe_browsing/BUILD.gn
+@@ -29,6 +29,8 @@ action("make_file_types_protobuf") {
+ target_arch = "mac"
+ } else if (is_linux) {
+ target_arch = "linux"
++ } else if (is_bsd) {
++ target_arch = "bsd"
+ } else {
+ # This will cause the script to fail.
+ target_arch = "unknown_target_arch"
diff --git a/www/iridium/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py b/www/iridium/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py
new file mode 100644
index 000000000000..45859bff41f8
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py
@@ -0,0 +1,19 @@
+--- chrome/browser/resources/safe_browsing/gen_file_type_proto.py.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/resources/safe_browsing/gen_file_type_proto.py
+@@ -31,6 +31,7 @@ def PlatformTypes():
+ "android": download_file_types_pb2.DownloadFileType.PLATFORM_ANDROID,
+ "chromeos": download_file_types_pb2.DownloadFileType.PLATFORM_CHROME_OS,
+ "linux": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
++ "bsd": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX,
+ "mac": download_file_types_pb2.DownloadFileType.PLATFORM_MAC,
+ "win": download_file_types_pb2.DownloadFileType.PLATFORM_WINDOWS,
+ }
+@@ -169,7 +170,7 @@ class DownloadFileTypeProtoGenerator(Bin
+ 'Outfile must have a %d for version and %s for platform.')
+ parser.add_option('-t', '--type',
+ help='The platform type. One of android, chromeos, ' +
+- 'linux, mac, win')
++ 'linux, bsd, mac, win')
+
+ def AddExtraCommandLineArgsForVirtualEnvRun(self, opts, command):
+ if opts.type is not None:
diff --git a/www/iridium/files/patch-chrome_browser_resources_vulcanize.gni b/www/iridium/files/patch-chrome_browser_resources_vulcanize.gni
new file mode 100644
index 000000000000..13acbf11aff4
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_resources_vulcanize.gni
@@ -0,0 +1,11 @@
+--- chrome/browser/resources/vulcanize.gni.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/resources/vulcanize.gni
+@@ -13,7 +13,7 @@ template("node") {
+ "//third_party/node/node_modules.tar.gz.sha1",
+ ]
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ inputs += [ "//third_party/node/linux/node-linux-x64.tar.gz.sha1" ]
+ }
+ if (is_win) {
diff --git a/www/iridium/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc b/www/iridium/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
new file mode 100644
index 000000000000..6bb5ded691a6
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc
+@@ -8,7 +8,12 @@
+
+ #include "base/hash.h"
+ #include "base/logging.h"
++//XXX(rene) needs shim headers?
++#if defined(USE_SYSTEM_PROTOBUF)
++#include <google/protobuf/message_lite.h>
++#else
+ #include "third_party/protobuf/src/google/protobuf/message_lite.h"
++#endif
+
+ namespace safe_browsing {
+
diff --git a/www/iridium/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc b/www/iridium/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc
new file mode 100644
index 000000000000..84cc4858abe8
--- /dev/null
+++ b/www/iridium/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 2017-04-19 19:06:30 UTC
++++ chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc
+@@ -720,7 +720,7 @@ void IncidentReportingService::OnEnviron
+ environment_collection_pending_ = false;
+
+ // CurrentProcessInfo::CreationTime() is missing on some platforms.
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ base::TimeDelta uptime =
+ first_incident_time_ - base::CurrentProcessInfo::CreationTime();
+ environment_data->mutable_process()->set_uptime_msec(uptime.InMilliseconds());
diff --git a/www/iridium/files/patch-chrome_browser_safe__browsing_permission__reporter.cc b/www/iridium/files/patch-chrome_browser_safe__browsing_permission__reporter.cc
new file mode 100644
index 000000000000..34f7084f45cf
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_safe__browsing_permission__reporter.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/safe_browsing/permission_reporter.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/safe_browsing/permission_reporter.cc
+@@ -188,7 +188,7 @@ bool PermissionReporter::BuildReport(con
+ #if defined(OS_ANDROID)
+ report.set_platform_type(PermissionReport::ANDROID_PLATFORM);
+ #elif defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_CHROMEOS) || \
+- defined(OS_LINUX)
++ defined(OS_LINUX) || defined(OS_BSD)
+ report.set_platform_type(PermissionReport::DESKTOP_PLATFORM);
+ #else
+ #error Unsupported platform.
diff --git a/www/iridium/files/patch-chrome_browser_search_local__files__ntp__source.cc b/www/iridium/files/patch-chrome_browser_search_local__files__ntp__source.cc
new file mode 100644
index 000000000000..231ba4dd4a8d
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_search_local__files__ntp__source.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/search/local_files_ntp_source.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/search/local_files_ntp_source.cc
+@@ -20,8 +20,13 @@
+ #include "build/build_config.h"
+ #include "chrome/common/url_constants.h"
+ #include "content/public/browser/url_data_source.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#include <re2/stringpiece.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
+ #include "third_party/re2/src/re2/stringpiece.h"
++#endif
+
+ namespace {
+
diff --git a/www/iridium/files/patch-chrome_browser_speech_tts__controller__impl.cc b/www/iridium/files/patch-chrome_browser_speech_tts__controller__impl.cc
new file mode 100644
index 000000000000..d8a55b4ab3ed
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_speech_tts__controller__impl.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/speech/tts_controller_impl.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/speech/tts_controller_impl.cc
+@@ -347,9 +347,13 @@ int TtsControllerImpl::QueueSize() {
+ }
+
+ TtsPlatformImpl* TtsControllerImpl::GetPlatformImpl() {
++#if defined(OS_BSD)
++ return NULL;
++#else
+ if (!platform_impl_)
+ platform_impl_ = TtsPlatformImpl::GetInstance();
+ return platform_impl_;
++#endif
+ }
+
+ int TtsControllerImpl::GetMatchingVoice(
diff --git a/www/iridium/files/patch-chrome_browser_sync_chrome__sync__client.cc b/www/iridium/files/patch-chrome_browser_sync_chrome__sync__client.cc
new file mode 100644
index 000000000000..fcfd327ffbe6
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_sync_chrome__sync__client.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/sync/chrome_sync_client.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/sync/chrome_sync_client.cc
+@@ -639,7 +639,7 @@ void ChromeSyncClient::RegisterDesktopDa
+ }
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_CHROMEOS)
++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Dictionary sync is enabled by default.
+ if (!disabled_types.Has(syncer::DICTIONARY)) {
+ sync_service->RegisterDataTypeController(
diff --git a/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group.cc b/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group.cc
new file mode 100644
index 000000000000..8d63165160d3
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group.cc
@@ -0,0 +1,56 @@
+--- chrome/browser/task_manager/sampling/task_group.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/task_manager/sampling/task_group.cc
+@@ -28,9 +28,9 @@ const int kBackgroundRefreshTypesMask =
+ #if defined(OS_WIN)
+ REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME |
+ #endif // defined(OS_WIN)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ REFRESH_TYPE_FD_COUNT |
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ #if !defined(DISABLE_NACL)
+ REFRESH_TYPE_NACL |
+ #endif // !defined(DISABLE_NACL)
+@@ -102,9 +102,9 @@ TaskGroup::TaskGroup(
+ nacl_debug_stub_port_(nacl::kGdbDebugStubPortUnknown),
+ #endif // !defined(DISABLE_NACL)
+ idle_wakeups_per_second_(-1),
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ open_fd_count_(-1),
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ gpu_memory_has_duplicates_(false),
+ is_backgrounded_(false),
+ weak_ptr_factory_(this) {
+@@ -117,10 +117,10 @@ TaskGroup::TaskGroup(
+ weak_ptr_factory_.GetWeakPtr()),
+ base::Bind(&TaskGroup::OnIdleWakeupsRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::Bind(&TaskGroup::OnOpenFdCountRefreshDone,
+ weak_ptr_factory_.GetWeakPtr()),
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ base::Bind(&TaskGroup::OnProcessPriorityDone,
+ weak_ptr_factory_.GetWeakPtr())));
+ worker_thread_sampler_.swap(sampler);
+@@ -333,14 +333,14 @@ void TaskGroup::OnIdleWakeupsRefreshDone
+ OnBackgroundRefreshTypeFinished(REFRESH_TYPE_IDLE_WAKEUPS);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void TaskGroup::OnOpenFdCountRefreshDone(int open_fd_count) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
+
+ open_fd_count_ = open_fd_count;
+ OnBackgroundRefreshTypeFinished(REFRESH_TYPE_FD_COUNT);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ void TaskGroup::OnProcessPriorityDone(bool is_backgrounded) {
+ DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
diff --git a/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group.h b/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group.h
new file mode 100644
index 000000000000..eda8013fad37
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group.h
@@ -0,0 +1,39 @@
+--- chrome/browser/task_manager/sampling/task_group.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/task_manager/sampling/task_group.h
+@@ -96,9 +96,9 @@ class TaskGroup {
+ int nacl_debug_stub_port() const { return nacl_debug_stub_port_; }
+ #endif // !defined(DISABLE_NACL)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int open_fd_count() const { return open_fd_count_; }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ int idle_wakeups_per_second() const { return idle_wakeups_per_second_; }
+
+@@ -124,9 +124,9 @@ class TaskGroup {
+
+ void OnIdleWakeupsRefreshDone(int idle_wakeups_per_second);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void OnOpenFdCountRefreshDone(int open_fd_count);
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ void OnProcessPriorityDone(bool is_backgrounded);
+
+@@ -174,10 +174,10 @@ class TaskGroup {
+ int nacl_debug_stub_port_;
+ #endif // !defined(DISABLE_NACL)
+ int idle_wakeups_per_second_;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // The number of file descriptors currently open by the process.
+ int open_fd_count_;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ bool gpu_memory_has_duplicates_;
+ bool is_backgrounded_;
+
diff --git a/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc b/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
new file mode 100644
index 000000000000..a53900a2ed69
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc
@@ -0,0 +1,44 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.cc
+@@ -36,9 +36,9 @@ TaskGroupSampler::TaskGroupSampler(
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnMemoryRefreshCallback& on_memory_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ const OnProcessPriorityCallback& on_process_priority)
+ : process_(std::move(process)),
+ process_metrics_(CreateProcessMetrics(process_.Handle())),
+@@ -46,9 +46,9 @@ TaskGroupSampler::TaskGroupSampler(
+ on_cpu_refresh_callback_(on_cpu_refresh),
+ on_memory_refresh_callback_(on_memory_refresh),
+ on_idle_wakeups_callback_(on_idle_wakeups),
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ on_open_fd_count_callback_(on_open_fd_count),
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ on_process_priority_callback_(on_process_priority) {
+ DCHECK(blocking_pool_runner.get());
+
+@@ -80,7 +80,7 @@ void TaskGroupSampler::Refresh(int64_t r
+ on_memory_refresh_callback_);
+ }
+
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_IDLE_WAKEUPS,
+ refresh_flags)) {
+ base::PostTaskAndReplyWithResult(
+@@ -89,7 +89,7 @@ void TaskGroupSampler::Refresh(int64_t r
+ base::Bind(&TaskGroupSampler::RefreshIdleWakeupsPerSecond, this),
+ on_idle_wakeups_callback_);
+ }
+-#endif // defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ #if defined(OS_LINUX)
+ if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_FD_COUNT,
diff --git a/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h b/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
new file mode 100644
index 000000000000..cfb03a01b44a
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h
@@ -0,0 +1,50 @@
+--- chrome/browser/task_manager/sampling/task_group_sampler.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/task_manager/sampling/task_group_sampler.h
+@@ -45,9 +45,9 @@ class TaskGroupSampler : public base::Re
+ using OnCpuRefreshCallback = base::Callback<void(double)>;
+ using OnMemoryRefreshCallback = base::Callback<void(MemoryUsageStats)>;
+ using OnIdleWakeupsCallback = base::Callback<void(int)>;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ using OnOpenFdCountCallback = base::Callback<void(int)>;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ using OnProcessPriorityCallback = base::Callback<void(bool)>;
+
+ TaskGroupSampler(
+@@ -56,9 +56,9 @@ class TaskGroupSampler : public base::Re
+ const OnCpuRefreshCallback& on_cpu_refresh,
+ const OnMemoryRefreshCallback& on_memory_refresh,
+ const OnIdleWakeupsCallback& on_idle_wakeups,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const OnOpenFdCountCallback& on_open_fd_count,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ const OnProcessPriorityCallback& on_process_priority);
+
+ // Refreshes the expensive process' stats (CPU usage, memory usage, and idle
+@@ -73,9 +73,9 @@ class TaskGroupSampler : public base::Re
+ double RefreshCpuUsage();
+ MemoryUsageStats RefreshMemoryUsage();
+ int RefreshIdleWakeupsPerSecond();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int RefreshOpenFdCount();
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ bool RefreshProcessPriority();
+
+ // The process that holds the handle that we own so that we can use it for
+@@ -93,9 +93,9 @@ class TaskGroupSampler : public base::Re
+ const OnCpuRefreshCallback on_cpu_refresh_callback_;
+ const OnMemoryRefreshCallback on_memory_refresh_callback_;
+ const OnIdleWakeupsCallback on_idle_wakeups_callback_;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const OnOpenFdCountCallback on_open_fd_count_callback_;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ const OnProcessPriorityCallback on_process_priority_callback_;
+
+ // To assert we're running on the correct thread.
diff --git a/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc b/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
new file mode 100644
index 000000000000..bd8bfc45a89b
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc
@@ -0,0 +1,16 @@
+--- chrome/browser/task_manager/sampling/task_manager_impl.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/task_manager/sampling/task_manager_impl.cc
+@@ -180,11 +180,11 @@ void TaskManagerImpl::GetUSERHandles(Tas
+ }
+
+ int TaskManagerImpl::GetOpenFdCount(TaskId task_id) const {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ return GetTaskGroupByTaskId(task_id)->open_fd_count();
+ #else
+ return -1;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ bool TaskManagerImpl::IsTaskOnBackgroundedProcess(TaskId task_id) const {
diff --git a/www/iridium/files/patch-chrome_browser_task__manager_task__manager__observer.h b/www/iridium/files/patch-chrome_browser_task__manager_task__manager__observer.h
new file mode 100644
index 000000000000..56461cfc4ed6
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_task__manager_task__manager__observer.h
@@ -0,0 +1,16 @@
+--- chrome/browser/task_manager/task_manager_observer.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/task_manager/task_manager_observer.h
+@@ -42,11 +42,11 @@ enum RefreshType {
+ // or backgrounded.
+ REFRESH_TYPE_PRIORITY = 1 << 13,
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // For observers interested in getting the number of open file descriptors of
+ // processes.
+ REFRESH_TYPE_FD_COUNT = 1 << 14,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ REFRESH_TYPE_MEMORY_STATE = 1 << 15,
+ REFRESH_TYPE_KEEPALIVE_COUNT = 1 << 16,
diff --git a/www/iridium/files/patch-chrome_browser_tracing_crash__service__uploader.cc b/www/iridium/files/patch-chrome_browser_tracing_crash__service__uploader.cc
new file mode 100644
index 000000000000..ca1b6a9c876c
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_tracing_crash__service__uploader.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/tracing/crash_service_uploader.cc.orig 2017-04-24 14:40:29 UTC
++++ chrome/browser/tracing/crash_service_uploader.cc
+@@ -157,6 +157,8 @@ void TraceCrashServiceUploader::DoUpload
+ const char product[] = "Chrome_Android";
+ #elif defined(OS_CHROMEOS)
+ const char product[] = "Chrome_ChromeOS";
++#elif defined(OS_FREEBSD)
++ const char product[] = "Chrome_FreeBSD";
+ #else
+ #error Platform not supported.
+ #endif
diff --git a/www/iridium/files/patch-chrome_browser_ui_BUILD.gn b/www/iridium/files/patch-chrome_browser_ui_BUILD.gn
new file mode 100644
index 000000000000..cd892fb19cd7
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_BUILD.gn
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/BUILD.gn.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/BUILD.gn
+@@ -3135,7 +3135,7 @@ split_static_library("ui") {
+ ]
+ }
+ }
+- if (is_linux) { # Both desktop Linux and ChromeOS.
++ if (is_linux || is_bsd) { # Both desktop Linux and ChromeOS.
+ sources += [
+ "certificate_dialogs.cc",
+ "certificate_dialogs.h",
diff --git a/www/iridium/files/patch-chrome_browser_ui_browser__command__controller.cc b/www/iridium/files/patch-chrome_browser_ui_browser__command__controller.cc
new file mode 100644
index 000000000000..59c1d4f68cf5
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_browser__command__controller.cc
@@ -0,0 +1,38 @@
+--- chrome/browser/ui/browser_command_controller.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/browser_command_controller.cc
+@@ -80,7 +80,7 @@
+ #include "chrome/browser/ui/browser_commands_chromeos.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+
+@@ -190,7 +190,7 @@ bool BrowserCommandController::IsReserve
+ if (window()->IsFullscreen() && command_id == IDC_FULLSCREEN)
+ return true;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // If this key was registered by the user as a content editing hotkey, then
+ // it is not reserved.
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+@@ -395,7 +395,7 @@ void BrowserCommandController::ExecuteCo
+ break;
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ case IDC_USE_SYSTEM_TITLE_BAR: {
+ PrefService* prefs = profile()->GetPrefs();
+ prefs->SetBoolean(prefs::kUseCustomChromeFrame,
+@@ -755,7 +755,7 @@ void BrowserCommandController::InitComma
+ command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_2, true);
+ command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_3, true);
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ command_updater_.UpdateCommandEnabled(IDC_USE_SYSTEM_TITLE_BAR, true);
+ #endif
+
diff --git a/www/iridium/files/patch-chrome_browser_ui_browser__view__prefs.cc b/www/iridium/files/patch-chrome_browser_ui_browser__view__prefs.cc
new file mode 100644
index 000000000000..bbc50dac4910
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_browser__view__prefs.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/browser_view_prefs.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/browser_view_prefs.cc
+@@ -10,7 +10,7 @@
+ #include "components/prefs/pref_registry_simple.h"
+ #include "components/prefs/pref_service.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)
+ #include "ui/base/x/x11_util.h" // nogncheck
+ #endif
+
diff --git a/www/iridium/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc b/www/iridium/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc
new file mode 100644
index 000000000000..15c9394f1037
--- /dev/null
+++ b/www/iridium/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 2017-04-19 19:06:30 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 defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const int ExclusiveAccessBubble::kPaddingPx = 8;
+ #else
+ const int ExclusiveAccessBubble::kPaddingPx = 15;
diff --git a/www/iridium/files/patch-chrome_browser_ui_input__method_input__method__engine.h b/www/iridium/files/patch-chrome_browser_ui_input__method_input__method__engine.h
new file mode 100644
index 000000000000..9061fbec5176
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_input__method_input__method__engine.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/input_method/input_method_engine.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/input_method/input_method_engine.h
+@@ -27,7 +27,7 @@ class InputMethodEngine : public InputMe
+
+ // ui::IMEEngineHandlerInterface:
+ bool IsActive() const override;
+- std::string GetExtensionId() const override;
++ std::string GetExtensionId() const;
+
+ // Creates and shows the IME window.
+ // Returns 0 for errors and |error| will contains the error message.
diff --git a/www/iridium/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc b/www/iridium/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc
new file mode 100644
index 000000000000..8dc37d035990
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/input_method/input_method_engine_base.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/input_method/input_method_engine_base.cc
+@@ -35,7 +35,7 @@
+ #include "ui/base/ime/chromeos/ime_keymap.h"
+ #elif defined(OS_WIN)
+ #include "ui/events/keycodes/keyboard_codes_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/events/keycodes/keyboard_codes_posix.h"
+ #endif
+
diff --git a/www/iridium/files/patch-chrome_browser_ui_libgtkui_BUILD.gn b/www/iridium/files/patch-chrome_browser_ui_libgtkui_BUILD.gn
new file mode 100644
index 000000000000..c43e4a107042
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_libgtkui_BUILD.gn
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/libgtkui/BUILD.gn.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/libgtkui/BUILD.gn
+@@ -2,7 +2,7 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+-assert(is_linux, "This file should only be referenced on Linux")
++assert(is_linux || is_bsd, "This file should only be referenced on Linux")
+
+ import("//build/config/features.gni")
+ import("//build/config/linux/gtk/gtk.gni")
diff --git a/www/iridium/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc b/www/iridium/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc
new file mode 100644
index 000000000000..7620e36c22d7
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc
@@ -0,0 +1,10 @@
+--- chrome/browser/ui/libgtkui/print_dialog_gtk.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/libgtkui/print_dialog_gtk.cc
+@@ -347,6 +347,7 @@ void PrintDialogGtk2::ShowDialog(
+ // Since we only generate PDF, only show printers that support PDF.
+ // TODO(thestig) Add more capabilities to support?
+ GtkPrintCapabilities cap = static_cast<GtkPrintCapabilities>(
++ GTK_PRINT_CAPABILITY_GENERATE_PS |
+ GTK_PRINT_CAPABILITY_GENERATE_PDF |
+ GTK_PRINT_CAPABILITY_PAGE_SET |
+ GTK_PRINT_CAPABILITY_COPIES |
diff --git a/www/iridium/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc b/www/iridium/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
new file mode 100644
index 000000000000..1a55f41b305b
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/startup/bad_flags_prompt.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/startup/bad_flags_prompt.cc
+@@ -72,7 +72,7 @@ void ShowBadFlagsPrompt(Browser* browser
+ // This flag gives extensions more powers.
+ extensions::switches::kExtensionsOnChromeURLs,
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Speech dispatcher is buggy, it can crash and it can make Chrome freeze.
+ // http://crbug.com/327295
+ switches::kEnableSpeechDispatcher,
diff --git a/www/iridium/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc b/www/iridium/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
new file mode 100644
index 000000000000..7cf4e11b87f1
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc
@@ -0,0 +1,23 @@
+--- chrome/browser/ui/startup/startup_browser_creator.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/startup/startup_browser_creator.cc
+@@ -96,7 +96,7 @@
+ #include "components/user_manager/user_manager.h"
+ #endif
+
+-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX)
++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+
+@@ -668,9 +668,11 @@ bool StartupBrowserCreator::ProcessCmdLi
+ }
+ #endif // OS_CHROMEOS
+
++#if 0 /* XXX */
+ #if defined(TOOLKIT_VIEWS) && defined(USE_X11)
+ ui::TouchFactory::SetTouchDeviceListFromCommandLine();
+ #endif
++#endif
+
+ #if defined(OS_MACOSX)
+ if (web_app::MaybeRebuildShortcut(command_line))
diff --git a/www/iridium/files/patch-chrome_browser_ui_tab__helpers.cc b/www/iridium/files/patch-chrome_browser_ui_tab__helpers.cc
new file mode 100644
index 000000000000..38719ce500bb
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_tab__helpers.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/tab_helpers.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/tab_helpers.cc
+@@ -245,7 +245,7 @@ void TabHelpers::AttachTabHelpers(WebCon
+ #endif
+
+ #if defined(OS_WIN) || defined(OS_MACOSX) || \
+- (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++ (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)
+ metrics::DesktopSessionDurationObserver::CreateForWebContents(web_contents);
+ #endif
+ // --- Feature tab helpers behind flags ---
diff --git a/www/iridium/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc b/www/iridium/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
new file mode 100644
index 000000000000..c9c14dedf418
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc
@@ -0,0 +1,15 @@
+--- chrome/browser/ui/task_manager/task_manager_columns.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/task_manager/task_manager_columns.cc
+@@ -80,10 +80,10 @@ const TableColumnData kColumns[] = {
+ {IDS_TASK_MANAGER_IDLE_WAKEUPS_COLUMN, ui::TableColumn::RIGHT, -1, 0,
+ arraysize("idlewakeups") * kCharWidth, -1, true, false, false},
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ {IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0,
+ arraysize("999") * kCharWidth, -1, true, false, false},
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ {IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN, ui::TableColumn::LEFT, -1, 0,
+ arraysize("background") * kCharWidth, -1, true, true, false},
+ {IDS_TASK_MANAGER_MEMORY_STATE_COLUMN, ui::TableColumn::LEFT, -1, 0,
diff --git a/www/iridium/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc b/www/iridium/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
new file mode 100644
index 000000000000..a16ae9956f24
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc
@@ -0,0 +1,50 @@
+--- chrome/browser/ui/task_manager/task_manager_table_model.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/task_manager/task_manager_table_model.cc
+@@ -454,13 +454,13 @@ base::string16 TaskManagerTableModel::Ge
+ ? stringifier_->backgrounded_string()
+ : stringifier_->foregrounded_string();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_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)
+ : stringifier_->n_a_string();
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ case IDS_TASK_MANAGER_MEMORY_STATE_COLUMN: {
+ return stringifier_->GetMemoryStateText(
+@@ -623,7 +623,7 @@ int TaskManagerTableModel::CompareValues
+ return BooleanCompare(is_proc1_bg, is_proc2_bg);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: {
+ const int proc1_fd_count =
+ observed_task_manager()->GetOpenFdCount(tasks_[row1]);
+@@ -631,7 +631,7 @@ int TaskManagerTableModel::CompareValues
+ observed_task_manager()->GetOpenFdCount(tasks_[row2]);
+ return ValueCompare(proc1_fd_count, proc2_fd_count);
+ }
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ default:
+ NOTREACHED();
+@@ -799,11 +799,11 @@ void TaskManagerTableModel::UpdateRefres
+ type = REFRESH_TYPE_KEEPALIVE_COUNT;
+ break;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN:
+ type = REFRESH_TYPE_FD_COUNT;
+ break;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ default:
+ NOTREACHED();
diff --git a/www/iridium/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc b/www/iridium/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc
new file mode 100644
index 000000000000..699a8f7a660b
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/toolbar/app_menu_model.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/toolbar/app_menu_model.cc
+@@ -631,7 +631,7 @@ bool AppMenuModel::IsCommandIdVisible(in
+ case IDC_UPGRADE_DIALOG:
+ return browser_defaults::kShowUpgradeMenuItem &&
+ UpgradeDetector::GetInstance()->notify_upgrade();
+-#if !defined(OS_LINUX) || defined(USE_AURA)
++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA)
+ case IDC_BOOKMARK_PAGE:
+ return !chrome::ShouldRemoveBookmarkThisPageUI(browser_->profile());
+ case IDC_BOOKMARK_ALL_TABS:
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_accelerator__table.cc b/www/iridium/files/patch-chrome_browser_ui_views_accelerator__table.cc
new file mode 100644
index 000000000000..aeef0af5953d
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_accelerator__table.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/accelerator_table.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/accelerator_table.cc
+@@ -54,7 +54,7 @@ const AcceleratorMapping kAcceleratorMap
+ { ui::VKEY_S, kPlatformModifier, IDC_SAVE_PAGE },
+ { ui::VKEY_9, kPlatformModifier, IDC_SELECT_LAST_TAB },
+ { ui::VKEY_NUMPAD9, kPlatformModifier, IDC_SELECT_LAST_TAB },
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ { ui::VKEY_9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB },
+ { ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB },
+ { ui::VKEY_NEXT, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, IDC_MOVE_TAB_NEXT },
+@@ -84,7 +84,7 @@ const AcceleratorMapping kAcceleratorMap
+ { ui::VKEY_NUMPAD7, kPlatformModifier, IDC_SELECT_TAB_6 },
+ { ui::VKEY_8, kPlatformModifier, IDC_SELECT_TAB_7 },
+ { ui::VKEY_NUMPAD8, kPlatformModifier, IDC_SELECT_TAB_7 },
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ { 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 },
+@@ -129,7 +129,7 @@ const AcceleratorMapping kAcceleratorMap
+ #endif // !OS_MACOSX
+
+ // Platform-specific key maps.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_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 },
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc b/www/iridium/files/patch-chrome_browser_ui_views_apps_chrome__native__app__window__views__aura.cc
new file mode 100644
index 000000000000..bd9f35a4601a
--- /dev/null
+++ b/www/iridium/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 2017-04-19 19:06:30 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 defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/shell_integration_linux.h"
+ #endif
+
+@@ -58,7 +58,7 @@ void ChromeNativeAppWindowViewsAura::OnB
+ const AppWindow::CreateParams& create_params,
+ views::Widget::InitParams* init_params,
+ views::Widget* widget) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)
+ std::string app_name = web_app::GenerateApplicationNameFromExtensionId(
+ app_window()->extension_id());
+ // Set up a custom WM_CLASS for app windows. This allows task switchers in
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc b/www/iridium/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
new file mode 100644
index 000000000000..a121f9512615
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc
@@ -0,0 +1,37 @@
+--- chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc
+@@ -26,14 +26,14 @@
+ #include "ui/wm/core/wm_state.h"
+ #endif // defined(USE_AURA)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "base/command_line.h"
+ #include "chrome/browser/ui/simple_message_box.h"
+ #include "chrome/grit/chromium_strings.h"
+ #include "chrome/grit/generated_resources.h"
+ #include "content/public/common/content_switches.h"
+ #include "ui/base/l10n/l10n_util.h"
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+
+ ChromeBrowserMainExtraPartsViews::ChromeBrowserMainExtraPartsViews() {
+ }
+@@ -70,7 +70,7 @@ void ChromeBrowserMainExtraPartsViews::P
+ IMEDriver::Register();
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // 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.
+@@ -94,7 +94,7 @@ void ChromeBrowserMainExtraPartsViews::P
+ base::RunLoop().RunUntilIdle();
+
+ exit(EXIT_FAILURE);
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ }
+
+ void ChromeBrowserMainExtraPartsViews::ServiceManagerConnectionStarted(
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_chrome__views__delegate.h b/www/iridium/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
new file mode 100644
index 000000000000..365fb2f890b0
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_chrome__views__delegate.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/chrome_views_delegate.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/chrome_views_delegate.h
+@@ -43,7 +43,7 @@ class ChromeViewsDelegate : public views
+ HICON GetSmallWindowIcon() const override;
+ int GetAppbarAutohideEdges(HMONITOR monitor,
+ const base::Closure& callback) override;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ gfx::ImageSkia* GetDefaultWindowIcon() const override;
+ bool WindowManagerProvidesTitleBar(bool maximized) override;
+ #endif
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_first__run__dialog.cc b/www/iridium/files/patch-chrome_browser_ui_views_first__run__dialog.cc
new file mode 100644
index 000000000000..5e6fab177b96
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_first__run__dialog.cc
@@ -0,0 +1,24 @@
+--- chrome/browser/ui/views/first_run_dialog.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/first_run_dialog.cc
+@@ -40,8 +40,10 @@ using views::GridLayout;
+ namespace {
+
+ void InitCrashReporterIfEnabled(bool enabled) {
++#ifndef OS_BSD
+ if (enabled)
+ breakpad::InitCrashReporter(std::string());
++#endif
+ }
+
+ } // namespace
+@@ -121,8 +123,10 @@ views::View* FirstRunDialog::CreateExtra
+ bool FirstRunDialog::Accept() {
+ GetWidget()->Hide();
+
++#if !defined(OS_BSD)
+ ChangeMetricsReportingStateWithReply(report_crashes_->checked(),
+ base::Bind(&InitCrashReporterIfEnabled));
++#endif
+
+ if (make_default_->checked())
+ shell_integration::SetAsDefaultBrowser();
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_frame_browser__frame.cc b/www/iridium/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
new file mode 100644
index 000000000000..94c956c697e9
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_frame_browser__frame.cc
@@ -0,0 +1,25 @@
+--- chrome/browser/ui/views/frame/browser_frame.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/frame/browser_frame.cc
+@@ -36,11 +36,11 @@
+ #include "components/user_manager/user_manager.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "chrome/browser/ui/views/frame/browser_command_handler_linux.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "ui/views/widget/desktop_aura/x11_desktop_handler.h"
+ #endif
+
+@@ -97,7 +97,7 @@ void BrowserFrame::InitBrowserFrame() {
+ non_client_view()->set_context_menu_controller(this);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ browser_command_handler_.reset(new BrowserCommandHandlerLinux(browser_view_));
+ #endif
+ }
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc b/www/iridium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
new file mode 100644
index 000000000000..288c9c90f96e
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
+@@ -38,7 +38,7 @@
+ #include "ui/views/window/frame_background.h"
+ #include "ui/views/window/window_shape.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/views/controls/menu/menu_runner.h"
+ #endif
+
+@@ -292,7 +292,7 @@ void OpaqueBrowserFrameView::ButtonPress
+ void OpaqueBrowserFrameView::OnMenuButtonClicked(views::MenuButton* source,
+ const gfx::Point& point,
+ const ui::Event* event) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ views::MenuRunner menu_runner(frame()->GetSystemMenuModel(),
+ views::MenuRunner::HAS_MNEMONICS);
+ ignore_result(menu_runner.RunMenuAt(browser_view()->GetWidget(),
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__layout.cc b/www/iridium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__layout.cc
new file mode 100644
index 000000000000..3e5cb4ffc39e
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__layout.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
+@@ -20,7 +20,7 @@ namespace {
+
+ const int kCaptionButtonHeight = 18;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)
+ // Default extra space between the top of the frame and the top of the window
+ // caption buttons.
+ const int kExtraCaption = 2;
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc b/www/iridium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
new file mode 100644
index 000000000000..55ae538f3522
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc
+@@ -10,7 +10,7 @@ bool OpaqueBrowserFrameViewPlatformSpeci
+ return false;
+ }
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_FREEBSD)
+
+ // static
+ OpaqueBrowserFrameViewPlatformSpecific*
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc b/www/iridium/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
new file mode 100644
index 000000000000..c7bdf78d105f
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/system_menu_model_builder.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_builder.cc
+@@ -84,7 +84,7 @@ void SystemMenuModelBuilder::BuildSystem
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddCheckItemWithStringId(IDC_USE_SYSTEM_TITLE_BAR,
+ IDS_SHOW_WINDOW_DECORATIONS_MENU);
+@@ -118,7 +118,7 @@ void SystemMenuModelBuilder::BuildSystem
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ model->AddSeparator(ui::NORMAL_SEPARATOR);
+ model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE);
+ #endif
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc b/www/iridium/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
new file mode 100644
index 000000000000..e13e94089ec8
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/views/frame/system_menu_model_delegate.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/frame/system_menu_model_delegate.cc
+@@ -13,7 +13,7 @@
+ #include "components/sessions/core/tab_restore_service.h"
+ #include "ui/base/l10n/l10n_util.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "chrome/common/pref_names.h"
+ #include "components/prefs/pref_service.h"
+ #endif
+@@ -29,7 +29,7 @@ SystemMenuModelDelegate::~SystemMenuMode
+ }
+
+ bool SystemMenuModelDelegate::IsCommandIdChecked(int command_id) const {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (command_id == IDC_USE_SYSTEM_TITLE_BAR) {
+ PrefService* prefs = browser_->profile()->GetPrefs();
+ return !prefs->GetBoolean(prefs::kUseCustomChromeFrame);
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_message__center_message__center__frame__view.cc b/www/iridium/files/patch-chrome_browser_ui_views_message__center_message__center__frame__view.cc
new file mode 100644
index 000000000000..906206b93202
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_message__center_message__center__frame__view.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/message_center/message_center_frame_view.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/message_center/message_center_frame_view.cc
+@@ -15,7 +15,7 @@
+ namespace message_center {
+
+ MessageCenterFrameView::MessageCenterFrameView() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ const int kBorderWidth = 1;
+ SetBorder(views::CreateSolidBorder(
+ kBorderWidth, message_center::kMessageCenterBorderColor));
diff --git a/www/iridium/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc b/www/iridium/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
new file mode 100644
index 000000000000..a7c9b7d262b8
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc
@@ -0,0 +1,29 @@
+--- chrome/browser/ui/views/tabs/tab_drag_controller.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/tabs/tab_drag_controller.cc
+@@ -251,7 +251,7 @@ void TabDragController::Init(
+ // synchronous on desktop Linux, so use that.
+ // - Ash
+ // Releasing capture on Ash cancels gestures so avoid it.
+-#if defined(OS_LINUX) || defined(USE_ASH)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_ASH)
+ can_release_capture_ = false;
+ #endif
+ start_point_in_screen_ = gfx::Point(source_tab_offset, mouse_offset.y());
+@@ -597,7 +597,7 @@ TabDragController::DragBrowserToNewTabSt
+ else
+ target_tabstrip->GetWidget()->SetCapture(attached_tabstrip_);
+
+-#if !defined(OS_LINUX) || defined(OS_CHROMEOS)
++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(OS_CHROMEOS)
+ // 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.
+@@ -1787,7 +1787,7 @@ TabDragController::Liveness TabDragContr
+ if (dragged_window)
+ exclude.insert(dragged_window);
+ }
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_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/iridium/files/patch-chrome_browser_ui_views_tabs_tab__strip.cc b/www/iridium/files/patch-chrome_browser_ui_views_tabs_tab__strip.cc
new file mode 100644
index 000000000000..f682195e002b
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_views_tabs_tab__strip.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/views/tabs/tab_strip.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/views/tabs/tab_strip.cc
+@@ -323,7 +323,7 @@ NewTabButton::NewTabButton(TabStrip* tab
+ tab_strip_(tab_strip),
+ destroyed_(NULL) {
+ set_animate_on_state_change(true);
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)
+ set_triggerable_event_flags(triggerable_event_flags() |
+ ui::EF_MIDDLE_MOUSE_BUTTON);
+ #endif
diff --git a/www/iridium/files/patch-chrome_browser_ui_webui_about__ui.cc b/www/iridium/files/patch-chrome_browser_ui_webui_about__ui.cc
new file mode 100644
index 000000000000..812135525c57
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_webui_about__ui.cc
@@ -0,0 +1,70 @@
+--- chrome/browser/ui/webui/about_ui.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/webui/about_ui.cc
+@@ -76,7 +76,7 @@
+ #include "chrome/browser/ui/webui/theme_source.h"
+ #endif
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/public/browser/zygote_host_linux.h"
+ #include "content/public/common/sandbox_linux.h"
+ #endif
+@@ -644,7 +644,7 @@ class AboutDnsHandler : public base::Ref
+ DISALLOW_COPY_AND_ASSIGN(AboutDnsHandler);
+ };
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string AboutLinuxProxyConfig() {
+ std::string data;
+ AppendHeader(&data, 0,
+@@ -660,6 +660,7 @@ std::string AboutLinuxProxyConfig() {
+ return data;
+ }
+
++#if !defined(OS_BSD)
+ void AboutSandboxRow(std::string* data, int name_id, bool good) {
+ data->append("<tr><td>");
+ data->append(l10n_util::GetStringUTF8(name_id));
+@@ -674,6 +675,7 @@ void AboutSandboxRow(std::string* data,
+ }
+ data->append("</td></tr>");
+ }
++#endif
+
+ std::string AboutSandbox() {
+ std::string data;
+@@ -683,6 +685,7 @@ std::string AboutSandbox() {
+ data.append(l10n_util::GetStringUTF8(IDS_ABOUT_SANDBOX_TITLE));
+ data.append("</h1>");
+
++#if !defined(OS_BSD)
+ // Get expected sandboxing status of renderers.
+ const int status =
+ content::ZygoteHost::GetInstance()->GetRendererSandboxStatus();
+@@ -723,6 +726,7 @@ std::string AboutSandbox() {
+ data.append(l10n_util::GetStringUTF8(IDS_ABOUT_SANDBOX_BAD));
+ }
+ data.append("</p>");
++#endif
+
+ AppendFooter(&data);
+ return data;
+@@ -794,7 +798,7 @@ void AboutUIHTMLSource::StartDataRequest
+ } else if (source_name_ == chrome::kChromeUIDNSHost) {
+ AboutDnsHandler::Start(profile(), callback);
+ return;
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ } else if (source_name_ == chrome::kChromeUILinuxProxyConfigHost) {
+ response = AboutLinuxProxyConfig();
+ #endif
+@@ -803,7 +807,7 @@ void AboutUIHTMLSource::StartDataRequest
+ ChromeOSCreditsHandler::Start(path, callback);
+ return;
+ #endif
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ } else if (source_name_ == chrome::kChromeUISandboxHost) {
+ response = AboutSandbox();
+ #endif
diff --git a/www/iridium/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc b/www/iridium/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
new file mode 100644
index 000000000000..0f035ece4581
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
+@@ -290,7 +290,7 @@ bool IsAboutUI(const GURL& url) {
+ #if !defined(OS_ANDROID)
+ || url.host_piece() == chrome::kChromeUITermsHost
+ #endif
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ || url.host_piece() == chrome::kChromeUILinuxProxyConfigHost ||
+ url.host_piece() == chrome::kChromeUISandboxHost
+ #endif
diff --git a/www/iridium/files/patch-chrome_browser_ui_webui_extensions_extension__loader__handler.cc b/www/iridium/files/patch-chrome_browser_ui_webui_extensions_extension__loader__handler.cc
new file mode 100644
index 000000000000..a1510e6881e5
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_webui_extensions_extension__loader__handler.cc
@@ -0,0 +1,14 @@
+--- chrome/browser/ui/webui/extensions/extension_loader_handler.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/webui/extensions/extension_loader_handler.cc
+@@ -28,7 +28,11 @@
+ #include "extensions/common/constants.h"
+ #include "extensions/common/extension.h"
+ #include "extensions/common/manifest_constants.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "ui/base/l10n/l10n_util.h"
+
+ namespace extensions {
diff --git a/www/iridium/files/patch-chrome_browser_ui_webui_options_browser__options__handler.cc b/www/iridium/files/patch-chrome_browser_ui_webui_options_browser__options__handler.cc
new file mode 100644
index 000000000000..dbd7f1e8dc29
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_webui_options_browser__options__handler.cc
@@ -0,0 +1,45 @@
+--- chrome/browser/ui/webui/options/browser_options_handler.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/webui/options/browser_options_handler.cc
+@@ -608,13 +608,13 @@ void BrowserOptionsHandler::GetLocalized
+ { "syncButtonTextStart", IDS_SYNC_SETUP_BUTTON_LABEL },
+ #endif // defined(OS_CHROMEOS)
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_POSIX) && !defined(OS_CHROMEOS)
+ { "showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS },
+ { "themesNativeButton", IDS_THEMES_GTK_BUTTON },
+ { "themesSetClassic", IDS_THEMES_SET_CLASSIC },
+ #else
+ { "themes", IDS_THEMES_GROUP_NAME },
+-#endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#endif // defined(OS_POSIX) && !defined(OS_CHROMEOS)
+
+ #if defined(OS_CHROMEOS) && defined(USE_ASH)
+ { "setWallpaper", IDS_SET_WALLPAPER_BUTTON },
+@@ -859,7 +859,7 @@ void BrowserOptionsHandler::RegisterMess
+ "requestProfilesInfo",
+ base::Bind(&BrowserOptionsHandler::HandleRequestProfilesInfo,
+ base::Unretained(this)));
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_POSIX) && !defined(OS_CHROMEOS)
+ web_ui()->RegisterMessageCallback(
+ "themesSetNative",
+ base::Bind(&BrowserOptionsHandler::ThemesSetNative,
+@@ -1519,7 +1519,7 @@ void BrowserOptionsHandler::ObserveTheme
+ ThemeService* theme_service = ThemeServiceFactory::GetForProfile(profile);
+ bool is_system_theme = false;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_POSIX) && !defined(OS_CHROMEOS)
+ bool profile_is_supervised = profile->IsSupervised();
+ is_system_theme = theme_service->UsingSystemTheme();
+ base::Value native_theme_enabled(!is_system_theme && !profile_is_supervised);
+@@ -1540,7 +1540,7 @@ void BrowserOptionsHandler::ThemesReset(
+ ThemeServiceFactory::GetForProfile(profile)->UseDefaultTheme();
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_POSIX) && !defined(OS_CHROMEOS)
+ void BrowserOptionsHandler::ThemesSetNative(const base::ListValue* args) {
+ content::RecordAction(UserMetricsAction("Options_GtkThemeSet"));
+ Profile* profile = Profile::FromWebUI(web_ui());
diff --git a/www/iridium/files/patch-chrome_browser_ui_webui_options_browser__options__handler.h b/www/iridium/files/patch-chrome_browser_ui_webui_options_browser__options__handler.h
new file mode 100644
index 000000000000..4187f58bb992
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_webui_options_browser__options__handler.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/webui/options/browser_options_handler.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/webui/options/browser_options_handler.h
+@@ -210,7 +210,7 @@ class BrowserOptionsHandler
+
+ void ObserveThemeChanged();
+ void ThemesReset(const base::ListValue* args);
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_POSIX) && !defined(OS_CHROMEOS)
+ void ThemesSetNative(const base::ListValue* args);
+ #endif
+
diff --git a/www/iridium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc b/www/iridium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
new file mode 100644
index 000000000000..d8d7f6adfb1d
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.cc
+@@ -32,7 +32,7 @@ void AppearanceHandler::RegisterMessages
+ "useDefaultTheme",
+ base::Bind(&AppearanceHandler::HandleUseDefaultTheme,
+ base::Unretained(this)));
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ web_ui()->RegisterMessageCallback(
+ "useSystemTheme",
+ base::Bind(&AppearanceHandler::HandleUseSystemTheme,
+@@ -50,7 +50,7 @@ void AppearanceHandler::HandleUseDefault
+ ThemeServiceFactory::GetForProfile(profile_)->UseDefaultTheme();
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ void AppearanceHandler::HandleUseSystemTheme(const base::ListValue* args) {
+ if (profile_->IsSupervised())
+ NOTREACHED();
diff --git a/www/iridium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h b/www/iridium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
new file mode 100644
index 000000000000..06229fdc6666
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h
@@ -0,0 +1,11 @@
+--- chrome/browser/ui/webui/settings/appearance_handler.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/webui/settings/appearance_handler.h
+@@ -35,7 +35,7 @@ class AppearanceHandler : public Setting
+ // Changes the UI theme of the browser to the default theme.
+ void HandleUseDefaultTheme(const base::ListValue* args);
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // Changes the UI theme of the browser to the system (GTK+) theme.
+ void HandleUseSystemTheme(const base::ListValue* args);
+ #endif
diff --git a/www/iridium/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc b/www/iridium/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc
new file mode 100644
index 000000000000..0f7a628925f4
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_ui_webui_settings_md__settings__localized__strings__provider.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/ui/webui/settings/md_settings_localized_strings_provider.cc
+@@ -301,7 +301,7 @@ void AddAppearanceStrings(content::WebUI
+ {"appearancePageTitle", IDS_SETTINGS_APPEARANCE},
+ {"exampleDotCom", IDS_SETTINGS_EXAMPLE_DOT_COM},
+ {"themes", IDS_SETTINGS_THEMES},
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ {"systemTheme", IDS_SETTINGS_SYSTEM_THEME},
+ {"useSystemTheme", IDS_SETTINGS_USE_SYSTEM_THEME},
+ {"classicTheme", IDS_SETTINGS_CLASSIC_THEME},
+@@ -321,7 +321,7 @@ void AddAppearanceStrings(content::WebUI
+ {"openWallpaperApp", IDS_SETTINGS_OPEN_WALLPAPER_APP},
+ {"setWallpaper", IDS_SETTINGS_SET_WALLPAPER},
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS},
+ #endif
+ };
diff --git a/www/iridium/files/patch-chrome_browser_web__applications_web__app.cc b/www/iridium/files/patch-chrome_browser_web__applications_web__app.cc
new file mode 100644
index 000000000000..8d6d2298ecda
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_web__applications_web__app.cc
@@ -0,0 +1,20 @@
+--- chrome/browser/web_applications/web_app.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/web_applications/web_app.cc
+@@ -58,7 +58,7 @@ namespace {
+ #if defined(OS_MACOSX)
+ const int kDesiredSizes[] = {16, 32, 128, 256, 512};
+ const size_t kNumDesiredSizes = arraysize(kDesiredSizes);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_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 kDesiredSizes[] = {16, 32, 48, 128, 256, 512};
+@@ -501,7 +501,7 @@ void GetIconsInfo(const WebApplicationIn
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string GetWMClassFromAppName(std::string app_name) {
+ base::i18n::ReplaceIllegalCharactersInPath(&app_name, '_');
+ base::TrimString(app_name, "_", &app_name);
diff --git a/www/iridium/files/patch-chrome_browser_web__applications_web__app.h b/www/iridium/files/patch-chrome_browser_web__applications_web__app.h
new file mode 100644
index 000000000000..0a869662de98
--- /dev/null
+++ b/www/iridium/files/patch-chrome_browser_web__applications_web__app.h
@@ -0,0 +1,11 @@
+--- chrome/browser/web_applications/web_app.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/browser/web_applications/web_app.h
+@@ -208,7 +208,7 @@ typedef std::vector<WebApplicationInfo::
+ void GetIconsInfo(const WebApplicationInfo& app_info, IconInfoList* icons);
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ // Windows that correspond to web apps need to have a deterministic (and
+ // different) WMClass than normal chrome windows so the window manager groups
+ // them as a separate application.
diff --git a/www/iridium/files/patch-chrome_common_BUILD.gn b/www/iridium/files/patch-chrome_common_BUILD.gn
new file mode 100644
index 000000000000..c892161413b0
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_BUILD.gn
@@ -0,0 +1,16 @@
+--- chrome/common/BUILD.gn.orig 2017-04-24 14:40:28 UTC
++++ chrome/common/BUILD.gn
+@@ -240,6 +240,13 @@ static_library("common") {
+ public_deps += [ "//ppapi/shared_impl" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "component_flash_hint_file_linux.cc",
++ "component_flash_hint_file_linux.h"
++ ]
++ }
++
+ if (enable_extensions) {
+ sources += [
+ "cast_messages.cc",
diff --git a/www/iridium/files/patch-chrome_common_chrome__paths.cc b/www/iridium/files/patch-chrome_common_chrome__paths.cc
new file mode 100644
index 000000000000..a28c7707e790
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_chrome__paths.cc
@@ -0,0 +1,53 @@
+--- chrome/common/chrome_paths.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/common/chrome_paths.cc
+@@ -190,7 +190,7 @@ bool PathProvider(int key, base::FilePat
+ return false;
+ break;
+ case chrome::DIR_DEFAULT_DOWNLOADS_SAFE:
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ if (!GetUserDownloadsDirectorySafe(&cur))
+ return false;
+ break;
+@@ -474,10 +474,12 @@ bool PathProvider(int key, base::FilePat
+ if (!base::PathExists(cur)) // We don't want to create this
+ return false;
+ break;
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD)
++#if defined(OS_POSIX) && !defined(OS_MACOSX)
+ case chrome::DIR_POLICY_FILES: {
+ #if defined(GOOGLE_CHROME_BUILD)
+ cur = base::FilePath(FILE_PATH_LITERAL("/etc/opt/chrome/policies"));
++#elif defined(OS_BSD)
++ cur = base::FilePath(FILE_PATH_LITERAL("/usr/local/etc/chrome/policies"));
+ #else
+ cur = base::FilePath(FILE_PATH_LITERAL("/etc/chromium/policies"));
+ #endif
+@@ -528,7 +530,7 @@ bool PathProvider(int key, base::FilePat
+ #endif
+ break;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ case chrome::DIR_NATIVE_MESSAGING:
+ #if defined(OS_MACOSX)
+ #if defined(GOOGLE_CHROME_BUILD)
+@@ -542,6 +544,9 @@ bool PathProvider(int key, base::FilePat
+ #if defined(GOOGLE_CHROME_BUILD)
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/opt/chrome/native-messaging-hosts"));
++#elif defined(OS_BSD)
++ cur = base::FilePath(FILE_PATH_LITERAL(
++ "/usr/local/etc/chrome/native-messaging-hosts"));
+ #else
+ cur = base::FilePath(FILE_PATH_LITERAL(
+ "/etc/chromium/native-messaging-hosts"));
+@@ -554,7 +559,7 @@ bool PathProvider(int key, base::FilePat
+ return false;
+ cur = cur.Append(FILE_PATH_LITERAL("NativeMessagingHosts"));
+ break;
+-#endif // defined(OS_LINUX) || defined(OS_MACOSX)
++#endif // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ #if !defined(OS_ANDROID)
+ case chrome::DIR_GLOBAL_GCM_STORE:
+ if (!PathService::Get(chrome::DIR_USER_DATA, &cur))
diff --git a/www/iridium/files/patch-chrome_common_chrome__paths.h b/www/iridium/files/patch-chrome_common_chrome__paths.h
new file mode 100644
index 000000000000..7da5bb54b903
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_chrome__paths.h
@@ -0,0 +1,29 @@
+--- chrome/common/chrome_paths.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/common/chrome_paths.h
+@@ -51,7 +51,7 @@ enum {
+ // to set policies for chrome. This directory
+ // contains subdirectories.
+ #endif
+-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || \
++#if defined(OS_CHROMEOS) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(CHROMIUM_BUILD)) || \
+ defined(OS_MACOSX)
+ DIR_USER_EXTERNAL_EXTENSIONS, // Directory for per-user external extensions
+ // on Chrome Mac and Chromium Linux.
+@@ -60,7 +60,7 @@ enum {
+ // create it.
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ DIR_STANDALONE_EXTERNAL_EXTENSIONS, // Directory for 'per-extension'
+ // definition manifest files that
+ // describe extensions which are to be
+@@ -113,7 +113,7 @@ enum {
+ DIR_SUPERVISED_USER_INSTALLED_WHITELISTS, // Directory where sanitized
+ // supervised user whitelists are
+ // installed.
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_MACOSX)
+ 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/iridium/files/patch-chrome_common_chrome__paths__internal.h b/www/iridium/files/patch-chrome_common_chrome__paths__internal.h
new file mode 100644
index 000000000000..982b4f1a3de1
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_chrome__paths__internal.h
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_paths_internal.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/common/chrome_paths_internal.h
+@@ -45,7 +45,7 @@ void GetUserCacheDirectory(const base::F
+ // Get the path to the user's documents directory.
+ bool GetUserDocumentsDirectory(base::FilePath* result);
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // Gets the path to a safe default download directory for a user.
+ bool GetUserDownloadsDirectorySafe(base::FilePath* result);
+ #endif
diff --git a/www/iridium/files/patch-chrome_common_chrome__switches.cc b/www/iridium/files/patch-chrome_common_chrome__switches.cc
new file mode 100644
index 000000000000..9c68debdfcc9
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_chrome__switches.cc
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_switches.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/common/chrome_switches.cc
+@@ -1138,7 +1138,7 @@ const char kAllowNaClSocketAPI[]
+ const char kEnableWaylandServer[] = "enable-wayland-server";
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kDisableInputImeAPI[] = "disable-input-ime-api";
+ extern const char kEnableInputImeAPI[] = "enable-input-ime-api";
+ #endif
diff --git a/www/iridium/files/patch-chrome_common_chrome__switches.h b/www/iridium/files/patch-chrome_common_chrome__switches.h
new file mode 100644
index 000000000000..83825f90af2c
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_chrome__switches.h
@@ -0,0 +1,11 @@
+--- chrome/common/chrome_switches.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/common/chrome_switches.h
+@@ -351,7 +351,7 @@ extern const char kAllowNaClSocketAPI[];
+ extern const char kEnableWaylandServer[];
+ #endif
+
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ extern const char kDisableInputImeAPI[];
+ extern const char kEnableInputImeAPI[];
+ #endif
diff --git a/www/iridium/files/patch-chrome_common_extensions_chrome__extensions__client.cc b/www/iridium/files/patch-chrome_common_extensions_chrome__extensions__client.cc
new file mode 100644
index 000000000000..e3ba4bad483b
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_extensions_chrome__extensions__client.cc
@@ -0,0 +1,14 @@
+--- chrome/common/extensions/chrome_extensions_client.cc.orig 2017-04-24 14:40:29 UTC
++++ chrome/common/extensions/chrome_extensions_client.cc
+@@ -97,7 +97,10 @@ ChromeChannelForHistogram GetChromeChann
+ static base::LazyInstance<ChromeExtensionsClient> g_client =
+ LAZY_INSTANCE_INITIALIZER;
+
+-ChromeExtensionsClient::ChromeExtensionsClient() {}
++ChromeExtensionsClient::ChromeExtensionsClient()
++ : chrome_api_permissions_(ChromeAPIPermissions()),
++ extensions_api_permissions_(ExtensionsAPIPermissions()) {
++}
+
+ ChromeExtensionsClient::~ChromeExtensionsClient() {
+ }
diff --git a/www/iridium/files/patch-chrome_common_extensions_command.cc b/www/iridium/files/patch-chrome_common_extensions_command.cc
new file mode 100644
index 000000000000..90c4ceb93a7d
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_extensions_command.cc
@@ -0,0 +1,11 @@
+--- chrome/common/extensions/command.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/common/extensions/command.cc
+@@ -302,7 +302,7 @@ std::string Command::CommandPlatform() {
+ return values::kKeybindingPlatformMac;
+ #elif defined(OS_CHROMEOS)
+ return values::kKeybindingPlatformChromeOs;
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return values::kKeybindingPlatformLinux;
+ #else
+ return "";
diff --git a/www/iridium/files/patch-chrome_common_features.gni b/www/iridium/files/patch-chrome_common_features.gni
new file mode 100644
index 000000000000..714d870e1646
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_features.gni
@@ -0,0 +1,11 @@
+--- chrome/common/features.gni.orig 2017-04-19 19:06:30 UTC
++++ chrome/common/features.gni
+@@ -40,7 +40,7 @@ declare_args() {
+ enable_hotwording = is_chrome_branded && is_chromeos
+
+ enable_one_click_signin =
+- is_win || is_mac || (is_linux && !is_chromeos && !is_chromecast)
++ is_win || is_mac || is_bsd || (is_linux && !is_chromeos && !is_chromecast)
+
+ # Set to true to bundle all the mash related mojo services into chrome.
+ # Specify --mash to chrome to have chrome start the mash environment.
diff --git a/www/iridium/files/patch-chrome_common_pref__names.cc b/www/iridium/files/patch-chrome_common_pref__names.cc
new file mode 100644
index 000000000000..f1f034751677
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_pref__names.cc
@@ -0,0 +1,29 @@
+--- chrome/common/pref_names.cc.orig 2017-04-19 19:06:30 UTC
++++ chrome/common/pref_names.cc
+@@ -1013,7 +1013,7 @@ const char kForceSessionSync[] = "settin
+ // only using an account that belongs to one of the domains from this pref.
+ const char kAllowedDomainsForApps[] = "settings.allowed_domains_for_apps";
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Linux specific preference on whether we should match the system theme.
+ const char kUsesSystemTheme[] = "extensions.theme.use_system";
+ #endif
+@@ -1100,7 +1100,7 @@ const char kShowUpdatePromotionInfoBar[]
+ "browser.show_update_promotion_info_bar";
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // 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";
+@@ -1476,7 +1476,7 @@ const char kDownloadDefaultDirectory[] =
+ // upgrade a unsafe location to a safe location.
+ const char kDownloadDirUpgraded[] = "download.directory_upgrade";
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ const char kOpenPdfDownloadInSystemReader[] =
+ "download.open_pdf_in_system_reader";
+ #endif
diff --git a/www/iridium/files/patch-chrome_common_pref__names.h b/www/iridium/files/patch-chrome_common_pref__names.h
new file mode 100644
index 000000000000..584e5bfc2ec1
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_pref__names.h
@@ -0,0 +1,29 @@
+--- chrome/common/pref_names.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/common/pref_names.h
+@@ -340,7 +340,7 @@ extern const char kForceGoogleSafeSearch
+ extern const char kForceYouTubeRestrict[];
+ extern const char kForceSessionSync[];
+ extern const char kAllowedDomainsForApps[];
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ extern const char kUsesSystemTheme[];
+ #endif
+ extern const char kCurrentThemePackFilename[];
+@@ -373,7 +373,7 @@ extern const char kDefaultBrowserSetting
+ #if defined(OS_MACOSX)
+ extern const char kShowUpdatePromotionInfoBar[];
+ #endif
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ extern const char kUseCustomChromeFrame[];
+ #endif
+ extern const char kBackShortcutBubbleShownCount[];
+@@ -527,7 +527,7 @@ extern const char kAppWindowPlacement[];
+ extern const char kDownloadDefaultDirectory[];
+ extern const char kDownloadExtensionsToOpen[];
+ extern const char kDownloadDirUpgraded[];
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ extern const char kOpenPdfDownloadInSystemReader[];
+ #endif
+
diff --git a/www/iridium/files/patch-chrome_common_url__constants.cc b/www/iridium/files/patch-chrome_common_url__constants.cc
new file mode 100644
index 000000000000..3ccea6a67f7e
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_url__constants.cc
@@ -0,0 +1,20 @@
+--- chrome/common/url_constants.cc.orig 2017-04-24 14:40:29 UTC
++++ chrome/common/url_constants.cc
+@@ -143,7 +143,7 @@ const char kChromeUIMdCupsSettingsURL[]
+ const char kChromeUIMetroFlowURL[] = "chrome://make-metro/";
+ #endif
+
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+ const char kChromeUITabModalConfirmDialogURL[] =
+ "chrome://tab-modal-confirm-dialog/";
+ #endif
+@@ -337,7 +337,7 @@ const char kChromeOSAssetPath[] = "/usr/
+ const char kChromeUIMetroFlowHost[] = "make-metro";
+ #endif
+
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+ const char kChromeUITabModalConfirmDialogHost[] = "tab-modal-confirm-dialog";
+ #endif
+
diff --git a/www/iridium/files/patch-chrome_common_url__constants.h b/www/iridium/files/patch-chrome_common_url__constants.h
new file mode 100644
index 000000000000..69d2b1f590a9
--- /dev/null
+++ b/www/iridium/files/patch-chrome_common_url__constants.h
@@ -0,0 +1,20 @@
+--- chrome/common/url_constants.h.orig 2017-04-19 19:06:30 UTC
++++ chrome/common/url_constants.h
+@@ -128,7 +128,7 @@ extern const char kChromeUIMdCupsSetting
+ extern const char kChromeUIMetroFlowURL[];
+ #endif
+
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+ extern const char kChromeUITabModalConfirmDialogURL[];
+ #endif
+
+@@ -314,7 +314,7 @@ extern const char kChromeOSAssetPath[];
+ extern const char kChromeUIMetroFlowHost[];
+ #endif
+
+-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA)
+ extern const char kChromeUITabModalConfirmDialogHost[];
+ #endif
+
diff --git a/www/iridium/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc b/www/iridium/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
new file mode 100644
index 000000000000..09dadf16e5ee
--- /dev/null
+++ b/www/iridium/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc
@@ -0,0 +1,38 @@
+--- chrome/renderer/pepper/pepper_flash_font_file_host.cc.orig 2017-04-19 19:06:31 UTC
++++ chrome/renderer/pepper/pepper_flash_font_file_host.cc
+@@ -14,7 +14,7 @@
+ #include "ppapi/proxy/ppapi_messages.h"
+ #include "ppapi/proxy/serialized_structs.h"
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "content/public/child/child_process_sandbox_support_linux.h"
+ #include "content/public/common/common_sandbox_support_linux.h"
+ #elif defined(OS_WIN)
+@@ -28,7 +28,7 @@ PepperFlashFontFileHost::PepperFlashFont
+ const ppapi::proxy::SerializedFontDescription& description,
+ PP_PrivateFontCharset charset)
+ : ResourceHost(host->GetPpapiHost(), instance, resource) {
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ fd_.reset(content::MatchFontWithFallback(
+ description.face,
+ description.weight >= PP_BROWSERFONT_TRUSTED_WEIGHT_BOLD,
+@@ -45,7 +45,7 @@ PepperFlashFontFileHost::PepperFlashFont
+ sk_sp<SkFontMgr> font_mgr(SkFontMgr::RefDefault());
+ typeface_ = sk_sp<SkTypeface>(
+ font_mgr->matchFamilyStyle(description.face.c_str(), style));
+-#endif // defined(OS_LINUX) || defined(OS_OPENBSD)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ PepperFlashFontFileHost::~PepperFlashFontFileHost() {}
+@@ -64,7 +64,7 @@ bool PepperFlashFontFileHost::GetFontDat
+ void* buffer,
+ size_t* length) {
+ bool result = false;
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int fd = fd_.get();
+ if (fd != -1)
+ result = content::GetFontTable(fd, table, 0 /* offset */,
diff --git a/www/iridium/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h b/www/iridium/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
new file mode 100644
index 000000000000..84489c5207cb
--- /dev/null
+++ b/www/iridium/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h
@@ -0,0 +1,20 @@
+--- chrome/renderer/pepper/pepper_flash_font_file_host.h.orig 2017-04-19 19:06:31 UTC
++++ chrome/renderer/pepper/pepper_flash_font_file_host.h
+@@ -14,7 +14,7 @@
+ #include "ppapi/c/private/pp_private_font_charset.h"
+ #include "ppapi/host/resource_host.h"
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/files/scoped_file.h"
+ #elif defined(OS_WIN)
+ #include "third_party/skia/include/core/SkRefCnt.h"
+@@ -50,7 +50,7 @@ class PepperFlashFontFileHost : public p
+ uint32_t table);
+ bool GetFontData(uint32_t table, void* buffer, size_t* length);
+
+-#if defined(OS_LINUX) || defined(OS_OPENBSD)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::ScopedFD fd_;
+ #elif defined(OS_WIN)
+ sk_sp<SkTypeface> typeface_;
diff --git a/www/iridium/files/patch-chrome_test_BUILD.gn b/www/iridium/files/patch-chrome_test_BUILD.gn
new file mode 100644
index 000000000000..1cea5919557d
--- /dev/null
+++ b/www/iridium/files/patch-chrome_test_BUILD.gn
@@ -0,0 +1,167 @@
+--- chrome/test/BUILD.gn.orig 2017-04-19 19:06:31 UTC
++++ chrome/test/BUILD.gn
+@@ -190,7 +190,7 @@ static_library("test_support") {
+ ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ public_deps += [ "//crypto:platform" ]
+ }
+ if (is_mac) {
+@@ -455,7 +455,7 @@ if (!is_android) {
+ "$root_out_dir/test_page.css.mock-http-headers",
+ "$root_out_dir/ui_test.pak",
+ ]
+- if (is_linux || is_win) {
++ if (is_linux || is_bsd || is_win) {
+ data += [
+ "$root_out_dir/chrome_100_percent.pak",
+ "$root_out_dir/chrome_200_percent.pak",
+@@ -464,7 +464,7 @@ if (!is_android) {
+ "$root_out_dir/resources.pak",
+ ]
+ }
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ data += [ "$root_out_dir/libppapi_tests.so" ]
+ }
+
+@@ -584,7 +584,7 @@ if (!is_android) {
+ "../browser/ui/views/payments/payment_sheet_view_controller_interactive_uitest.cc",
+ ]
+ }
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ if (!is_chromeos) {
+ # Desktop linux.
+ sources -= [
+@@ -2048,14 +2048,14 @@ test("browser_tests") {
+ sources += [ "//third_party/liblouis/nacl_wrapper/liblouis_wrapper_browsertest.cc" ]
+ deps += [ "//chrome/browser/chromeos" ]
+ data_deps += [ "//third_party/liblouis:liblouis_test_data" ]
+- } else if (is_linux || is_win) {
++ } else if (is_linux || is_bsd || is_win) {
+ sources += [
+ "../browser/ui/views/ime/ime_warning_bubble_browsertest.cc",
+ "../browser/ui/views/ime/ime_window_browsertest.cc",
+ ]
+ }
+
+- if (is_win || is_linux) {
++ if (is_win || is_linux || is_bsd) {
+ sources += [ "../browser/nacl_host/test/nacl_gdb_browsertest.cc" ]
+ data_deps += [ "//chrome/browser/nacl_host/test:mock_nacl_gdb" ]
+ }
+@@ -2067,7 +2067,7 @@ test("browser_tests") {
+ configs +=
+ [ "//build/config/win:default_large_module_incremental_linking" ]
+ }
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ data_deps += [ "//components/nacl/loader:nacl_helper" ]
+
+ if (enable_nacl_nonsfi) {
+@@ -2186,7 +2186,7 @@ test("browser_tests") {
+ }
+ }
+
+- if (is_linux && !is_component_build) {
++ if ((is_linux || is_bsd) && !is_component_build) {
+ # Set rpath to find the CDM adapter even in a non-component build.
+ configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
+ }
+@@ -2412,7 +2412,7 @@ test("browser_tests") {
+ if (toolkit_views) {
+ sources -= [ "../browser/ui/views/select_file_dialog_extension_browsertest.cc" ]
+ }
+- if (is_win || is_linux) {
++ if (is_win || is_linux || is_bsd) {
+ sources +=
+ [ "../browser/ui/views/ime/input_ime_apitest_nonchromeos.cc" ]
+ }
+@@ -2594,7 +2594,7 @@ test("browser_tests") {
+ "../browser/extensions/api/networking_private/networking_private_chromeos_apitest.cc",
+ ]
+ }
+- if (is_mac || is_win || (is_linux && !is_chromeos)) {
++ if (is_mac || is_win || is_bsd || (is_linux && !is_chromeos)) {
+ sources += [
+ # Tests for non mobile and non CrOS (includes Linux, Win, Mac).
+ "../browser/metrics/desktop_session_duration/audible_contents_tracker_browsertest.cc",
+@@ -2772,7 +2772,7 @@ if (!is_android) {
+ "//testing/xvfb.py",
+ ]
+
+- if (is_linux || is_win) {
++ if (is_linux || is_bsd || is_win) {
+ data += [
+ "$root_out_dir/chrome_100_percent.pak",
+ "$root_out_dir/chrome_200_percent.pak",
+@@ -3471,7 +3471,7 @@ test("unit_tests") {
+ "$root_out_dir/resources.pak",
+ ]
+ }
+- if (is_linux || is_win) {
++ if (is_linux || is_bsd || is_win) {
+ data += [ "$root_out_dir/chrome_200_percent.pak" ]
+ }
+ if (is_win) {
+@@ -4198,7 +4198,7 @@ test("unit_tests") {
+ "//ui/wm",
+ ]
+ }
+- if (!is_chromeos && is_linux) {
++ if (!is_chromeos && (is_linux || is_bsd)) {
+ sources += [
+ "../browser/password_manager/native_backend_kwallet_x_unittest.cc",
+ "../browser/shell_integration_linux_unittest.cc",
+@@ -4218,7 +4218,7 @@ test("unit_tests") {
+ if (use_gio) {
+ deps += [ "//build/linux/libgio" ]
+ }
+- if (!is_chromeos && !use_ozone && is_linux) {
++ if (!is_chromeos && !use_ozone && (is_linux || is_bsd)) {
+ deps += [ "//chrome/browser/ui/libgtkui" ]
+ }
+
+@@ -4487,18 +4487,18 @@ test("unit_tests") {
+ "//components/os_crypt:gnome_keyring_direct",
+ ]
+ }
+- if (is_linux && !is_chromeos && !use_ozone) {
++ if ((is_linux || is_bsd) && !is_chromeos && !use_ozone) {
+ sources +=
+ [ "../browser/password_manager/native_backend_libsecret_unittest.cc" ]
+ deps += [ "//third_party/libsecret" ]
+ }
+- if (is_linux && use_aura) {
++ if ((is_linux || is_bsd) && use_aura) {
+ deps += [ "//ui/aura:test_support" ]
+ if (use_dbus) {
+ deps += [ "//dbus:test_support" ]
+ }
+ }
+- if (is_linux && is_chrome_branded && current_cpu == "x86") {
++ if ((is_linux || is_bsd) && is_chrome_branded && current_cpu == "x86") {
+ ldflags = [ "-Wl,--strip-debug" ]
+ }
+ if (is_mac) {
+@@ -4996,7 +4996,7 @@ if (safe_browsing_mode == 1 && is_mac) {
+ }
+ }
+
+-if (!is_android) {
++if (!is_android && !is_bsd) {
+ # TODO(609855): Make this compile on Android and run on the bots.
+ test("chrome_app_unittests") {
+ sources = [
+@@ -5021,7 +5021,7 @@ if (!is_android) {
+ }
+ }
+
+-if (!is_android && !is_chromecast) {
++if (!is_android && !is_chromecast && !is_bsd) {
+ test("performance_browser_tests") {
+ sources = [
+ "../app/chrome_version.rc.version",
diff --git a/www/iridium/files/patch-chrome_test_base_in__process__browser__test.cc b/www/iridium/files/patch-chrome_test_base_in__process__browser__test.cc
new file mode 100644
index 000000000000..96e89ff7edbd
--- /dev/null
+++ b/www/iridium/files/patch-chrome_test_base_in__process__browser__test.cc
@@ -0,0 +1,13 @@
+--- chrome/test/base/in_process_browser_test.cc.orig 2017-04-19 19:06:31 UTC
++++ chrome/test/base/in_process_browser_test.cc
+@@ -94,6 +94,10 @@
+
+ namespace {
+
++#if defined(OS_FREEBSD)
++#include <signal.h>
++#endif
++
+ // Passed as value of kTestType.
+ const char kBrowserTestType[] = "browser";
+
diff --git a/www/iridium/files/patch-chrome_test_base_testing__browser__process.h b/www/iridium/files/patch-chrome_test_base_testing__browser__process.h
new file mode 100644
index 000000000000..f52d16386a76
--- /dev/null
+++ b/www/iridium/files/patch-chrome_test_base_testing__browser__process.h
@@ -0,0 +1,13 @@
+--- chrome/test/base/testing_browser_process.h.orig 2017-04-19 19:06:31 UTC
++++ chrome/test/base/testing_browser_process.h
+@@ -108,8 +108,8 @@ class TestingBrowserProcess : public Bro
+ DownloadStatusUpdater* download_status_updater() override;
+ DownloadRequestLimiter* download_request_limiter() override;
+
+-#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+- void StartAutoupdateTimer() override {}
++#if (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)) && !defined(OS_CHROMEOS)
++ void StartAutoupdateTimer() /*override*/ {}
+ #endif
+
+ net_log::ChromeNetLog* net_log() override;
diff --git a/www/iridium/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc b/www/iridium/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
new file mode 100644
index 000000000000..c329a059d171
--- /dev/null
+++ b/www/iridium/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc
@@ -0,0 +1,20 @@
+--- chrome/test/chromedriver/chrome/chrome_finder.cc.orig 2017-04-19 19:06:31 UTC
++++ chrome/test/chromedriver/chrome/chrome_finder.cc
+@@ -45,7 +45,7 @@ void GetApplicationDirs(std::vector<base
+ installation_locations[i].Append(L"Chromium\\Application"));
+ }
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ void GetApplicationDirs(std::vector<base::FilePath>* locations) {
+ locations->push_back(base::FilePath("/opt/google/chrome"));
+ locations->push_back(base::FilePath("/usr/local/bin"));
+@@ -95,7 +95,7 @@ bool FindChrome(base::FilePath* browser_
+ #elif defined(OS_MACOSX)
+ base::FilePath("Google Chrome.app/Contents/MacOS/Google Chrome"),
+ base::FilePath("Chromium.app/Contents/MacOS/Chromium")
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ base::FilePath("google-chrome"),
+ base::FilePath("chrome"),
+ base::FilePath("chromium"),
diff --git a/www/iridium/files/patch-chromecast_BUILD.gn b/www/iridium/files/patch-chromecast_BUILD.gn
new file mode 100644
index 000000000000..ac7833384bbf
--- /dev/null
+++ b/www/iridium/files/patch-chromecast_BUILD.gn
@@ -0,0 +1,11 @@
+--- chromecast/BUILD.gn.orig 2017-04-19 19:06:32 UTC
++++ chromecast/BUILD.gn
+@@ -55,7 +55,7 @@ cast_test_group("cast_tests") {
+ }
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ tests += [ "//chromecast/crash:cast_crash_unittests" ]
+ }
+
diff --git a/www/iridium/files/patch-chromecast_browser_BUILD.gn b/www/iridium/files/patch-chromecast_browser_BUILD.gn
new file mode 100644
index 000000000000..0012a2ea80a2
--- /dev/null
+++ b/www/iridium/files/patch-chromecast_browser_BUILD.gn
@@ -0,0 +1,11 @@
+--- chromecast/browser/BUILD.gn.orig 2017-04-19 19:06:32 UTC
++++ chromecast/browser/BUILD.gn
+@@ -125,7 +125,7 @@ source_set("browser") {
+ "//ui/gl",
+ ]
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [
+ "cast_content_window_linux.cc",
+ "cast_content_window_linux.h",
diff --git a/www/iridium/files/patch-chromecast_browser_cast__browser__main__parts.cc b/www/iridium/files/patch-chromecast_browser_cast__browser__main__parts.cc
new file mode 100644
index 000000000000..55f4ba2235e4
--- /dev/null
+++ b/www/iridium/files/patch-chromecast_browser_cast__browser__main__parts.cc
@@ -0,0 +1,29 @@
+--- chromecast/browser/cast_browser_main_parts.cc.orig 2017-04-19 19:06:32 UTC
++++ chromecast/browser/cast_browser_main_parts.cc
+@@ -70,7 +70,7 @@
+ #include <signal.h>
+ #include <sys/prctl.h>
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include <fontconfig/fontconfig.h>
+ #endif
+
+@@ -229,7 +229,7 @@ DefaultCommandLineSwitch g_default_switc
+ #if BUILDFLAG(IS_CAST_AUDIO_ONLY)
+ { switches::kDisableGpu, "" },
+ #endif
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_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.
+@@ -371,7 +371,7 @@ void CastBrowserMainParts::PostMainMessa
+ }
+
+ void CastBrowserMainParts::ToolkitInitialized() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Without this call, the FontConfig library gets implicitly initialized
+ // on the first call to FontConfig. Since it's not safe to initialize it
+ // concurrently from multiple threads, we explicitly initialize it here
diff --git a/www/iridium/files/patch-chromecast_browser_cast__content__browser__client.cc b/www/iridium/files/patch-chromecast_browser_cast__content__browser__client.cc
new file mode 100644
index 000000000000..49ab11392642
--- /dev/null
+++ b/www/iridium/files/patch-chromecast_browser_cast__content__browser__client.cc
@@ -0,0 +1,11 @@
+--- chromecast/browser/cast_content_browser_client.cc.orig 2017-04-19 19:06:32 UTC
++++ chromecast/browser/cast_content_browser_client.cc
+@@ -298,7 +298,7 @@ void CastContentBrowserClient::AppendExt
+ command_line->AppendSwitch(switches::kAllowHiddenMediaPlayback);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_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/iridium/files/patch-chromecast_browser_metrics_BUILD.gn b/www/iridium/files/patch-chromecast_browser_metrics_BUILD.gn
new file mode 100644
index 000000000000..367e3f1ef63a
--- /dev/null
+++ b/www/iridium/files/patch-chromecast_browser_metrics_BUILD.gn
@@ -0,0 +1,11 @@
+--- chromecast/browser/metrics/BUILD.gn.orig 2017-04-19 19:06:32 UTC
++++ chromecast/browser/metrics/BUILD.gn
+@@ -26,7 +26,7 @@ source_set("metrics") {
+ "//content/public/common",
+ ]
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [
+ "external_metrics.cc",
+ "external_metrics.h",
diff --git a/www/iridium/files/patch-chromecast_crash_BUILD.gn b/www/iridium/files/patch-chromecast_crash_BUILD.gn
new file mode 100644
index 000000000000..875145c37e4d
--- /dev/null
+++ b/www/iridium/files/patch-chromecast_crash_BUILD.gn
@@ -0,0 +1,11 @@
+--- chromecast/crash/BUILD.gn.orig 2017-04-19 19:06:32 UTC
++++ chromecast/crash/BUILD.gn
+@@ -78,7 +78,7 @@ source_set("test_support") {
+ ]
+ }
+
+-if (is_linux) {
++if (is_linux || is_bsd) {
+ test("cast_crash_unittests") {
+ sources = [
+ "cast_crashdump_uploader_unittest.cc",
diff --git a/www/iridium/files/patch-components_BUILD.gn b/www/iridium/files/patch-components_BUILD.gn
new file mode 100644
index 000000000000..96ed75ab4434
--- /dev/null
+++ b/www/iridium/files/patch-components_BUILD.gn
@@ -0,0 +1,13 @@
+--- components/BUILD.gn.orig 2017-04-19 19:06:32 UTC
++++ components/BUILD.gn
+@@ -177,8 +177,8 @@ test("components_unittests") {
+ "//components/certificate_reporting:unit_tests",
+ "//components/certificate_transparency:unit_tests",
+ "//components/contextual_search:unit_tests",
+- "//components/crash/content/app:unit_tests",
+- "//components/crash/core/common:unit_tests",
++ #"//components/crash/content/app:unit_tests",
++ #"//components/crash/core/common:unit_tests",
+ "//components/data_reduction_proxy/content/browser:unit_tests",
+ "//components/data_reduction_proxy/core/browser:unit_tests",
+ "//components/data_reduction_proxy/core/common:unit_tests",
diff --git a/www/iridium/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc b/www/iridium/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
new file mode 100644
index 000000000000..b666b919c799
--- /dev/null
+++ b/www/iridium/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc
@@ -0,0 +1,14 @@
+--- components/autofill/content/renderer/password_form_conversion_utils.cc.orig 2017-04-19 19:06:32 UTC
++++ components/autofill/content/renderer/password_form_conversion_utils.cc
+@@ -28,7 +28,11 @@
+ #include "third_party/WebKit/public/web/WebFormControlElement.h"
+ #include "third_party/WebKit/public/web/WebFrame.h"
+ #include "third_party/WebKit/public/web/WebInputElement.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using blink::WebDocument;
+ using blink::WebFormControlElement;
diff --git a/www/iridium/files/patch-components_autofill_core_browser_autofill__experiments.cc b/www/iridium/files/patch-components_autofill_core_browser_autofill__experiments.cc
new file mode 100644
index 000000000000..b6df6559536f
--- /dev/null
+++ b/www/iridium/files/patch-components_autofill_core_browser_autofill__experiments.cc
@@ -0,0 +1,11 @@
+--- components/autofill/core/browser/autofill_experiments.cc.orig 2017-04-19 19:06:32 UTC
++++ components/autofill/core/browser/autofill_experiments.cc
+@@ -151,7 +151,7 @@ unsigned int GetPopupMargin() {
+ }
+
+ bool OfferStoreUnmaskedCards() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ // The checkbox can be forced on with a flag, but by default we don't store
+ // on Linux due to lack of system keychain integration. See crbug.com/162735
+ return base::CommandLine::ForCurrentProcess()->HasSwitch(
diff --git a/www/iridium/files/patch-components_content__settings_core_browser_website__settings__registry.cc b/www/iridium/files/patch-components_content__settings_core_browser_website__settings__registry.cc
new file mode 100644
index 000000000000..6dc37c2a184c
--- /dev/null
+++ b/www/iridium/files/patch-components_content__settings_core_browser_website__settings__registry.cc
@@ -0,0 +1,12 @@
+--- components/content_settings/core/browser/website_settings_registry.cc.orig 2017-04-19 19:06:32 UTC
++++ components/content_settings/core/browser/website_settings_registry.cc
+@@ -88,6 +88,9 @@ const WebsiteSettingsInfo* WebsiteSettin
+ // doesn't allow the settings to be managed in the same way. See
+ // crbug.com/642184.
+ sync_status = WebsiteSettingsInfo::UNSYNCABLE;
++#elif defined(OS_BSD)
++ if (!(platform & PLATFORM_BSD))
++ return nullptr;
+ #else
+ #error "Unsupported platform"
+ #endif
diff --git a/www/iridium/files/patch-components_content__settings_core_browser_website__settings__registry.h b/www/iridium/files/patch-components_content__settings_core_browser_website__settings__registry.h
new file mode 100644
index 000000000000..de95fbaa82de
--- /dev/null
+++ b/www/iridium/files/patch-components_content__settings_core_browser_website__settings__registry.h
@@ -0,0 +1,15 @@
+--- components/content_settings/core/browser/website_settings_registry.h.orig 2017-04-19 19:06:32 UTC
++++ components/content_settings/core/browser/website_settings_registry.h
+@@ -36,10 +36,11 @@ class WebsiteSettingsRegistry {
+ PLATFORM_MAC = 1 << 3,
+ PLATFORM_ANDROID = 1 << 4,
+ PLATFORM_IOS = 1 << 5,
++ PLATFORM_BSD = 1 << 6,
+
+ // Settings only applied to win, mac, linux and chromeos.
+ DESKTOP =
+- PLATFORM_WINDOWS | PLATFORM_LINUX | PLATFORM_CHROMEOS | PLATFORM_MAC,
++ PLATFORM_WINDOWS | PLATFORM_LINUX | PLATFORM_CHROMEOS | PLATFORM_MAC | PLATFORM_BSD,
+
+ // Settings applied to all platforms, including win, mac, linux, chromeos,
+ // android, ios.
diff --git a/www/iridium/files/patch-components_cookie__config_cookie__store__util.cc b/www/iridium/files/patch-components_cookie__config_cookie__store__util.cc
new file mode 100644
index 000000000000..3aaab8566da5
--- /dev/null
+++ b/www/iridium/files/patch-components_cookie__config_cookie__store__util.cc
@@ -0,0 +1,24 @@
+--- components/cookie_config/cookie_store_util.cc.orig 2017-04-19 19:06:32 UTC
++++ components/cookie_config/cookie_store_util.cc
+@@ -11,7 +11,7 @@
+
+ namespace cookie_config {
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ namespace {
+
+ // Use the operating system's mechanisms to encrypt cookies before writing
+@@ -63,10 +63,10 @@ base::LazyInstance<CookieOSCryptoDelegat
+ net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
+ return g_cookie_crypto_delegate.Pointer();
+ }
+-#else // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#else // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ net::CookieCryptoDelegate* GetCookieCryptoDelegate() {
+ return NULL;
+ }
+-#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#endif // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ } // namespace cookie_config
diff --git a/www/iridium/files/patch-components_crash_content_app_BUILD.gn b/www/iridium/files/patch-components_crash_content_app_BUILD.gn
new file mode 100644
index 000000000000..a292bd40b6df
--- /dev/null
+++ b/www/iridium/files/patch-components_crash_content_app_BUILD.gn
@@ -0,0 +1,11 @@
+--- components/crash/content/app/BUILD.gn.orig 2017-04-19 19:06:32 UTC
++++ components/crash/content/app/BUILD.gn
+@@ -153,7 +153,7 @@ source_set("app_non_mac_win") {
+ "//breakpad:breakpad_handler",
+ "//sandbox",
+ ]
+- } else if (is_posix && !is_ios) {
++ } else if (is_posix && !is_ios && !is_bsd) {
+ deps += [ "//breakpad:client" ]
+ }
+ }
diff --git a/www/iridium/files/patch-components_crash_content_browser_BUILD.gn b/www/iridium/files/patch-components_crash_content_browser_BUILD.gn
new file mode 100644
index 000000000000..dcdecb6d24b2
--- /dev/null
+++ b/www/iridium/files/patch-components_crash_content_browser_BUILD.gn
@@ -0,0 +1,21 @@
+--- components/crash/content/browser/BUILD.gn.orig 2017-04-19 19:06:32 UTC
++++ components/crash/content/browser/BUILD.gn
+@@ -16,7 +16,7 @@ source_set("browser") {
+
+ deps = [
+ "//base",
+- "//breakpad:client",
++ #"//breakpad:client",
+ "//components/crash/content/app",
+ "//content/public/browser",
+ "//content/public/common",
+@@ -39,7 +39,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) {
+- configs += [ "//breakpad:client_config" ]
+- public_configs = [ "//breakpad:client_config" ]
++ #configs += [ "//breakpad:client_config" ]
++ #public_configs = [ "//breakpad:client_config" ]
+ }
+ }
diff --git a/www/iridium/files/patch-components_drive_drive__api__util.cc b/www/iridium/files/patch-components_drive_drive__api__util.cc
new file mode 100644
index 000000000000..cbd71400a515
--- /dev/null
+++ b/www/iridium/files/patch-components_drive_drive__api__util.cc
@@ -0,0 +1,14 @@
+--- components/drive/drive_api_util.cc.orig 2017-04-19 19:06:32 UTC
++++ components/drive/drive_api_util.cc
+@@ -22,7 +22,11 @@
+ #include "google_apis/drive/drive_api_parser.h"
+ #include "net/base/escape.h"
+ #include "net/base/net_errors.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "url/gurl.h"
+
+ namespace drive {
diff --git a/www/iridium/files/patch-components_feedback_anonymizer__tool.cc b/www/iridium/files/patch-components_feedback_anonymizer__tool.cc
new file mode 100644
index 000000000000..2fc696bdca66
--- /dev/null
+++ b/www/iridium/files/patch-components_feedback_anonymizer__tool.cc
@@ -0,0 +1,14 @@
+--- components/feedback/anonymizer_tool.cc.orig 2017-04-19 19:06:32 UTC
++++ components/feedback/anonymizer_tool.cc
+@@ -10,7 +10,11 @@
+ #include "base/strings/string_number_conversions.h"
+ #include "base/strings/string_util.h"
+ #include "base/strings/stringprintf.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using re2::RE2;
+
diff --git a/www/iridium/files/patch-components_flags__ui_flags__state.cc b/www/iridium/files/patch-components_flags__ui_flags__state.cc
new file mode 100644
index 000000000000..92b0f5ba8d2a
--- /dev/null
+++ b/www/iridium/files/patch-components_flags__ui_flags__state.cc
@@ -0,0 +1,11 @@
+--- components/flags_ui/flags_state.cc.orig 2017-04-19 19:06:32 UTC
++++ components/flags_ui/flags_state.cc
+@@ -566,7 +566,7 @@ int FlagsState::GetCurrentPlatform() {
+ return kOsWin;
+ #elif defined(OS_CHROMEOS) // Needs to be before the OS_LINUX check.
+ return kOsCrOS;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_FREEBSD)
+ return kOsLinux;
+ #elif defined(OS_ANDROID)
+ return kOsAndroid;
diff --git a/www/iridium/files/patch-components_gcm__driver_gcm__client.h b/www/iridium/files/patch-components_gcm__driver_gcm__client.h
new file mode 100644
index 000000000000..e05ba84a6f97
--- /dev/null
+++ b/www/iridium/files/patch-components_gcm__driver_gcm__client.h
@@ -0,0 +1,10 @@
+--- components/gcm_driver/gcm_client.h.orig 2017-04-19 19:06:32 UTC
++++ components/gcm_driver/gcm_client.h
+@@ -82,6 +82,7 @@ class GCMClient {
+ PLATFORM_CROS,
+ PLATFORM_IOS,
+ PLATFORM_ANDROID,
++ PLATFORM_BSD,
+ PLATFORM_UNKNOWN
+ };
+
diff --git a/www/iridium/files/patch-components_gcm__driver_gcm__client__impl.cc b/www/iridium/files/patch-components_gcm__driver_gcm__client__impl.cc
new file mode 100644
index 000000000000..3c9641eb52c0
--- /dev/null
+++ b/www/iridium/files/patch-components_gcm__driver_gcm__client__impl.cc
@@ -0,0 +1,12 @@
+--- components/gcm_driver/gcm_client_impl.cc.orig 2017-04-19 19:06:32 UTC
++++ components/gcm_driver/gcm_client_impl.cc
+@@ -136,6 +136,9 @@ void ToCheckinProtoVersion(
+ case GCMClient::PLATFORM_CROS:
+ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_CROS;
+ break;
++ case GCMClient::PLATFORM_BSD: // TODO what the hell are those?
++ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX;
++ break;
+ case GCMClient::PLATFORM_UNKNOWN:
+ // For unknown platform, return as LINUX.
+ platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX;
diff --git a/www/iridium/files/patch-components_json__schema_json__schema__validator.cc b/www/iridium/files/patch-components_json__schema_json__schema__validator.cc
new file mode 100644
index 000000000000..1df9422f6c1e
--- /dev/null
+++ b/www/iridium/files/patch-components_json__schema_json__schema__validator.cc
@@ -0,0 +1,14 @@
+--- components/json_schema/json_schema_validator.cc.orig 2017-04-19 19:06:32 UTC
++++ components/json_schema/json_schema_validator.cc
+@@ -20,7 +20,11 @@
+ #include "base/strings/stringprintf.h"
+ #include "base/values.h"
+ #include "components/json_schema/json_schema_constants.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace schema = json_schema_constants;
+
diff --git a/www/iridium/files/patch-components_keyed__service_core_dependency__graph__unittest.cc b/www/iridium/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
new file mode 100644
index 000000000000..8f8989ede564
--- /dev/null
+++ b/www/iridium/files/patch-components_keyed__service_core_dependency__graph__unittest.cc
@@ -0,0 +1,14 @@
+--- components/keyed_service/core/dependency_graph_unittest.cc.orig 2017-04-19 19:06:32 UTC
++++ components/keyed_service/core/dependency_graph_unittest.cc
+@@ -9,7 +9,11 @@
+ #include "components/keyed_service/core/dependency_graph.h"
+ #include "components/keyed_service/core/dependency_node.h"
+ #include "testing/gtest/include/gtest/gtest.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace {
+
diff --git a/www/iridium/files/patch-components_metrics_BUILD.gn b/www/iridium/files/patch-components_metrics_BUILD.gn
new file mode 100644
index 000000000000..281a7cf34871
--- /dev/null
+++ b/www/iridium/files/patch-components_metrics_BUILD.gn
@@ -0,0 +1,34 @@
+--- components/metrics/BUILD.gn.orig 2017-04-19 19:06:32 UTC
++++ components/metrics/BUILD.gn
+@@ -118,6 +118,13 @@ static_library("metrics") {
+ if (is_win) {
+ sources -= [ "machine_id_provider_stub.cc" ]
+ }
++
++ if (is_bsd) {
++ sources -= [
++ "system_memory_stats_recorder_linux.cc"
++ ]
++ }
++
+ }
+
+ if (!is_ios) {
+@@ -295,7 +302,7 @@ static_library("test_support") {
+ ]
+ }
+
+-if (is_linux) {
++if (is_linux || is_bsd) {
+ static_library("serialization") {
+ sources = [
+ "serialization/metric_sample.cc",
+@@ -358,7 +365,7 @@ source_set("unit_tests") {
+ "//ui/gfx/geometry",
+ ]
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [ "serialization/serialization_utils_unittest.cc" ]
+ deps += [ ":serialization" ]
+ }
diff --git a/www/iridium/files/patch-components_metrics_drive__metrics__provider__linux.cc b/www/iridium/files/patch-components_metrics_drive__metrics__provider__linux.cc
new file mode 100644
index 000000000000..45928cd0e41b
--- /dev/null
+++ b/www/iridium/files/patch-components_metrics_drive__metrics__provider__linux.cc
@@ -0,0 +1,16 @@
+--- components/metrics/drive_metrics_provider_linux.cc.orig 2017-04-19 19:06:32 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/iridium/files/patch-components_metrics_system__memory__stats__recorder__linux.cc b/www/iridium/files/patch-components_metrics_system__memory__stats__recorder__linux.cc
new file mode 100644
index 000000000000..ec3f1524a5c3
--- /dev/null
+++ b/www/iridium/files/patch-components_metrics_system__memory__stats__recorder__linux.cc
@@ -0,0 +1,18 @@
+--- components/metrics/system_memory_stats_recorder_linux.cc.orig 2017-04-19 19:06:32 UTC
++++ components/metrics/system_memory_stats_recorder_linux.cc
+@@ -30,6 +30,7 @@ namespace metrics {
+ UMA_HISTOGRAM_LINEAR(name, sample, 2500, 50)
+
+ void RecordMemoryStats(RecordMemoryStatsType type) {
++#if !defined(OS_FREEBSD)
+ base::SystemMemoryInfoKB memory;
+ if (!base::GetSystemMemoryInfo(&memory))
+ return;
+@@ -93,6 +94,7 @@ void RecordMemoryStats(RecordMemoryStats
+ break;
+ }
+ }
++#endif // !defined(OS_FREEBSD)
+ }
+
+ } // namespace metrics
diff --git a/www/iridium/files/patch-components_neterror_resources_neterror.js b/www/iridium/files/patch-components_neterror_resources_neterror.js
new file mode 100644
index 000000000000..1b394b548d70
--- /dev/null
+++ b/www/iridium/files/patch-components_neterror_resources_neterror.js
@@ -0,0 +1,11 @@
+--- components/neterror/resources/neterror.js.orig 2017-04-19 19:06:32 UTC
++++ components/neterror/resources/neterror.js
+@@ -150,7 +150,7 @@ function setUpCachedButton(buttonStrings
+ }
+
+ var primaryControlOnLeft = true;
+-// <if expr="is_macosx or is_ios or is_linux or is_android">
++// <if expr="is_macosx or is_ios or is_linux or is_android or is_bsd">
+ primaryControlOnLeft = false;
+ // </if>
+
diff --git a/www/iridium/files/patch-components_os__crypt_os__crypt.h b/www/iridium/files/patch-components_os__crypt_os__crypt.h
new file mode 100644
index 000000000000..5eb2565dc001
--- /dev/null
+++ b/www/iridium/files/patch-components_os__crypt_os__crypt.h
@@ -0,0 +1,20 @@
+--- components/os_crypt/os_crypt.h.orig 2017-04-19 19:06:32 UTC
++++ components/os_crypt/os_crypt.h
+@@ -13,7 +13,7 @@
+ #include "base/strings/string16.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "components/os_crypt/key_storage_linux.h"
+ #endif // defined(OS_LINUX) && !defined(OS_CHROMEOS)
+
+@@ -23,7 +23,7 @@
+ // true for Linux, if a password management tool is available.
+ class OSCrypt {
+ public:
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // If |store_type| is a known password store, we will attempt to use it.
+ // In any other case, we default to auto-detecting the store.
+ // This should not be changed after OSCrypt has been used.
diff --git a/www/iridium/files/patch-components_password__manager_core_browser_import_csv__reader.cc b/www/iridium/files/patch-components_password__manager_core_browser_import_csv__reader.cc
new file mode 100644
index 000000000000..5aed2235790f
--- /dev/null
+++ b/www/iridium/files/patch-components_password__manager_core_browser_import_csv__reader.cc
@@ -0,0 +1,14 @@
+--- components/password_manager/core/browser/import/csv_reader.cc.orig 2017-04-19 19:06:32 UTC
++++ components/password_manager/core/browser/import/csv_reader.cc
+@@ -9,7 +9,11 @@
+ #include "base/logging.h"
+ #include "base/macros.h"
+ #include "base/strings/string_util.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace {
+
diff --git a/www/iridium/files/patch-components_plugins_renderer_BUILD.gn b/www/iridium/files/patch-components_plugins_renderer_BUILD.gn
new file mode 100644
index 000000000000..95a3a2fd40ad
--- /dev/null
+++ b/www/iridium/files/patch-components_plugins_renderer_BUILD.gn
@@ -0,0 +1,17 @@
+--- components/plugins/renderer/BUILD.gn.orig 2017-04-19 19:06:33 UTC
++++ components/plugins/renderer/BUILD.gn
+@@ -20,6 +20,7 @@ static_library("renderer") {
+ }
+
+ deps = [
++ "//v8",
+ "//content/public/child",
+ "//content/public/common",
+ "//content/public/renderer",
+@@ -28,6 +29,5 @@ static_library("renderer") {
+ "//third_party/WebKit/public:blink",
+ "//third_party/re2",
+ "//ui/base",
+- "//v8",
+ ]
+ }
diff --git a/www/iridium/files/patch-components_plugins_renderer_plugin__placeholder.cc b/www/iridium/files/patch-components_plugins_renderer_plugin__placeholder.cc
new file mode 100644
index 000000000000..e91036d176df
--- /dev/null
+++ b/www/iridium/files/patch-components_plugins_renderer_plugin__placeholder.cc
@@ -0,0 +1,14 @@
+--- components/plugins/renderer/plugin_placeholder.cc.orig 2017-04-19 19:06:33 UTC
++++ components/plugins/renderer/plugin_placeholder.cc
+@@ -11,7 +11,11 @@
+ #include "gin/object_template_builder.h"
+ #include "third_party/WebKit/public/web/WebElement.h"
+ #include "third_party/WebKit/public/web/WebPluginContainer.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace plugins {
+
diff --git a/www/iridium/files/patch-components_policy_BUILD.gn b/www/iridium/files/patch-components_policy_BUILD.gn
new file mode 100644
index 000000000000..5859d031bb18
--- /dev/null
+++ b/www/iridium/files/patch-components_policy_BUILD.gn
@@ -0,0 +1,19 @@
+--- components/policy/BUILD.gn.orig 2017-04-19 19:06:33 UTC
++++ components/policy/BUILD.gn
+@@ -16,6 +16,7 @@ assert(!is_ios, "Policy should not be re
+ gen_policy_templates_common = true
+ gen_policy_templates_win = is_win
+ gen_policy_templates_linux = is_linux
++gen_policy_templates_bsd = is_bsd
+ gen_policy_templates_android = is_android
+ gen_policy_templates_mac = is_mac
+
+@@ -159,7 +160,7 @@ grit("grit_policy_templates") {
+ outputs += policy_templates_android_outputs
+ defines += [ "gen_policy_templates_android" ]
+ }
+- if (gen_policy_templates_linux) {
++ if (gen_policy_templates_linux || gen_policy_templates_bsd) {
+ outputs += policy_templates_linux_outputs
+ defines += [ "gen_policy_templates_linux" ]
+ }
diff --git a/www/iridium/files/patch-components_policy_core_common_schema.cc b/www/iridium/files/patch-components_policy_core_common_schema.cc
new file mode 100644
index 000000000000..ab668c47da6e
--- /dev/null
+++ b/www/iridium/files/patch-components_policy_core_common_schema.cc
@@ -0,0 +1,14 @@
+--- components/policy/core/common/schema.cc.orig 2017-04-19 19:06:33 UTC
++++ components/policy/core/common/schema.cc
+@@ -21,7 +21,11 @@
+ #include "components/json_schema/json_schema_constants.h"
+ #include "components/json_schema/json_schema_validator.h"
+ #include "components/policy/core/common/schema_internal.h"
++#if defined(OS_FREEBSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace schema = json_schema_constants;
+
diff --git a/www/iridium/files/patch-components_policy_resources_policy__templates.json b/www/iridium/files/patch-components_policy_resources_policy__templates.json
new file mode 100644
index 000000000000..ca54d4ae55f7
--- /dev/null
+++ b/www/iridium/files/patch-components_policy_resources_policy__templates.json
@@ -0,0 +1,47 @@
+--- components/policy/resources/policy_templates.json.orig 2017-04-24 14:40:29 UTC
++++ components/policy/resources/policy_templates.json
+@@ -964,7 +964,7 @@
+ 'name': 'RemoteAccessHostMatchUsername',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-'],
++ 'supported_on': ['chrome.linux:25-', 'chrome.freebsd:25-', 'chrome.mac:25-', 'chrome_os:42-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -2139,7 +2139,7 @@
+ 'name': 'GSSAPILibraryName',
+ 'type': 'string',
+ 'schema': { 'type': 'string' },
+- 'supported_on': ['chrome.linux:9-'],
++ 'supported_on': ['chrome.linux:9-', 'chrome.freebsd:9-'],
+ 'features': {
+ 'dynamic_refresh': False,
+ 'per_profile': False,
+@@ -4815,7 +4815,7 @@
+ 'name': 'RequireOnlineRevocationChecksForLocalAnchors',
+ '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.freebsd:30-', 'chrome.win:30-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': False,
+@@ -5723,7 +5723,7 @@
+ 'name': 'BackgroundModeEnabled',
+ 'type': 'main',
+ 'schema': { 'type': 'boolean' },
+- 'supported_on': ['chrome.win:19-', 'chrome.linux:19-'],
++ 'supported_on': ['chrome.win:19-', 'chrome.linux:19-', 'chrome.freebsd:19-'],
+ 'features': {
+ 'can_be_recommended': True,
+ 'dynamic_refresh': True,
+@@ -6250,7 +6250,7 @@
+ 'name': 'FullscreenAllowed',
+ '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.freebsd:31-'],
+ 'features': {
+ 'dynamic_refresh': True,
+ 'per_profile': True,
diff --git a/www/iridium/files/patch-components_policy_tools_generate__policy__source.py b/www/iridium/files/patch-components_policy_tools_generate__policy__source.py
new file mode 100644
index 000000000000..9ce300c3dc33
--- /dev/null
+++ b/www/iridium/files/patch-components_policy_tools_generate__policy__source.py
@@ -0,0 +1,11 @@
+--- components/policy/tools/generate_policy_source.py.orig 2017-04-19 19:06:33 UTC
++++ components/policy/tools/generate_policy_source.py
+@@ -103,7 +103,7 @@ class PolicyDetails:
+ if platform.startswith('chrome.'):
+ platform_sub = platform[7:]
+ if platform_sub == '*':
+- self.platforms.extend(['win', 'mac', 'linux'])
++ self.platforms.extend(['win', 'mac', 'linux', 'bsd'])
+ else:
+ self.platforms.append(platform_sub)
+ else:
diff --git a/www/iridium/files/patch-components_storage__monitor_BUILD.gn b/www/iridium/files/patch-components_storage__monitor_BUILD.gn
new file mode 100644
index 000000000000..e5cdb683bdb4
--- /dev/null
+++ b/www/iridium/files/patch-components_storage__monitor_BUILD.gn
@@ -0,0 +1,24 @@
+--- components/storage_monitor/BUILD.gn.orig 2017-04-19 19:06:33 UTC
++++ components/storage_monitor/BUILD.gn
+@@ -65,6 +65,21 @@ static_library("storage_monitor") {
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "mtab_watcher_linux.cc",
++ "mtab_watcher_linux.h",
++ "storage_monitor_linux.cc",
++ "storage_monitor_linux.h",
++ "udev_util_linux.cc",
++ "udev_util_linux.h",
++ ]
++ sources += [
++ "storage_monitor_freebsd.cc",
++ "storage_monitor_freebsd.h",
++ ]
++ }
++
+ if (use_udev) {
+ deps += [ "//device/udev_linux" ]
+ } else if (is_linux) {
diff --git a/www/iridium/files/patch-components_storage__monitor_storage__monitor.cc b/www/iridium/files/patch-components_storage__monitor_storage__monitor.cc
new file mode 100644
index 000000000000..4886d38b929a
--- /dev/null
+++ b/www/iridium/files/patch-components_storage__monitor_storage__monitor.cc
@@ -0,0 +1,18 @@
+--- components/storage_monitor/storage_monitor.cc.orig 2017-04-19 19:06:33 UTC
++++ components/storage_monitor/storage_monitor.cc
+@@ -85,6 +85,7 @@ std::vector<StorageInfo> StorageMonitor:
+
+ void StorageMonitor::EnsureInitialized(base::Closure callback) {
+ DCHECK(thread_checker_.CalledOnValidThread());
++//#if !defined(OS_BSD) //XXX(rene) why disabled?
+ if (initialized_) {
+ if (!callback.is_null())
+ callback.Run();
+@@ -100,6 +101,7 @@ void StorageMonitor::EnsureInitialized(b
+
+ initializing_ = true;
+ Init();
++//#endif
+ }
+
+ bool StorageMonitor::IsInitialized() const {
diff --git a/www/iridium/files/patch-components_storage__monitor_storage__monitor__freebsd.cc b/www/iridium/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
new file mode 100644
index 000000000000..1b77d7f0624f
--- /dev/null
+++ b/www/iridium/files/patch-components_storage__monitor_storage__monitor__freebsd.cc
@@ -0,0 +1,104 @@
+--- components/storage_monitor/storage_monitor_freebsd.cc.orig 2017-04-28 14:23:59 UTC
++++ components/storage_monitor/storage_monitor_freebsd.cc
+@@ -0,0 +1,101 @@
++// 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.
++
++// StorageMonitorFreeBSD implementation.
++
++#include "components/storage_monitor/storage_monitor_freebsd.h"
++
++#include <stdio.h>
++
++#include <list>
++
++#include "base/bind.h"
++#include "base/metrics/histogram.h"
++#include "base/process/kill.h"
++#include "base/process/launch.h"
++#include "base/stl_util.h"
++#include "base/strings/string_number_conversions.h"
++#include "base/strings/string_util.h"
++#include "base/strings/utf_string_conversions.h"
++#include "components/storage_monitor/media_storage_util.h"
++#include "components/storage_monitor/removable_device_constants.h"
++#include "components/storage_monitor/storage_info.h"
++
++using content::BrowserThread;
++
++namespace storage_monitor {
++
++namespace {
++
++// udev device property constants.
++const char kBlockSubsystemKey[] = "block";
++const char kDiskDeviceTypeKey[] = "disk";
++const char kFsUUID[] = "ID_FS_UUID";
++const char kLabel[] = "ID_FS_LABEL";
++const char kModel[] = "ID_MODEL";
++const char kModelID[] = "ID_MODEL_ID";
++const char kRemovableSysAttr[] = "removable";
++const char kSerialShort[] = "ID_SERIAL_SHORT";
++const char kSizeSysAttr[] = "size";
++const char kVendor[] = "ID_VENDOR";
++const char kVendorID[] = "ID_VENDOR_ID";
++
++StorageMonitor::EjectStatus EjectPathOnFileThread(
++ const base::FilePath& path,
++ const base::FilePath& device) {
++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
++
++ static const char kUmountBinary[] = "/sbin/umount";
++ std::vector<std::string> command;
++ command.push_back(kUmountBinary);
++ command.push_back(path.value());
++
++ base::LaunchOptions options;
++ base::Process process = base::LaunchProcess(command, options);
++ if (!process.IsValid())
++ return StorageMonitor::EJECT_FAILURE;
++
++ int exit_code = -1;
++ if (!process.WaitForExitWithTimeout(base::TimeDelta::FromMilliseconds(3000),
++ &exit_code)) {
++ process.Terminate(-1, false);
++ base::EnsureProcessTerminated(std::move(process));
++ return StorageMonitor::EJECT_FAILURE;
++ }
++
++ // TODO(gbillock): Make sure this is found in documentation
++ // somewhere. Experimentally it seems to hold that exit code
++ // 1 means device is in use.
++ if (exit_code == 1)
++ return StorageMonitor::EJECT_IN_USE;
++ if (exit_code != 0)
++ return StorageMonitor::EJECT_FAILURE;
++
++ return StorageMonitor::EJECT_OK;
++}
++
++} // namespace
++
++StorageMonitorFreeBSD::StorageMonitorFreeBSD() {
++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
++}
++
++StorageMonitorFreeBSD::~StorageMonitorFreeBSD() {
++ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
++}
++
++void StorageMonitorFreeBSD::Init() {
++}
++
++bool StorageMonitorFreeBSD::GetStorageInfoForPath(
++ const base::FilePath& path,
++ StorageInfo* device_info) const {
++ return false; // TODO
++}
++
++StorageMonitor* StorageMonitor::CreateInternal() {
++ return new StorageMonitorFreeBSD();
++}
++
++} // namespace storage_monitor
diff --git a/www/iridium/files/patch-components_storage__monitor_storage__monitor__freebsd.h b/www/iridium/files/patch-components_storage__monitor_storage__monitor__freebsd.h
new file mode 100644
index 000000000000..2ef1c3cce693
--- /dev/null
+++ b/www/iridium/files/patch-components_storage__monitor_storage__monitor__freebsd.h
@@ -0,0 +1,48 @@
+--- components/storage_monitor/storage_monitor_freebsd.h.orig 2017-04-28 14:23:59 UTC
++++ components/storage_monitor/storage_monitor_freebsd.h
+@@ -0,0 +1,45 @@
++// 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.
++
++// StorageMonitorFreeBSD processes mount point change events, notifies listeners
++// about the addition and deletion of media devices, and answers queries about
++// mounted devices.
++// StorageMonitorFreeBSD lives on the UI thread, and uses ???
++// the FILE thread to get mount point change events.
++
++#ifndef COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
++#define COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
++
++#include <map>
++#include <string>
++
++#include "base/compiler_specific.h"
++#include "base/files/file_path.h"
++#include "base/files/file_path_watcher.h"
++#include "base/memory/weak_ptr.h"
++#include "components/storage_monitor/storage_monitor.h"
++#include "content/public/browser/browser_thread.h"
++
++namespace storage_monitor {
++
++class StorageMonitorFreeBSD : public StorageMonitor {
++ public:
++ // Should only be called by browser start up code.
++ // Use StorageMonitor::GetInstance() instead.
++ explicit StorageMonitorFreeBSD();
++ virtual ~StorageMonitorFreeBSD();
++
++ // Must be called for StorageMonitorFreeBSD to work.
++ virtual void Init() override;
++ private:
++ // StorageMonitor implementation.
++ virtual bool GetStorageInfoForPath(const base::FilePath& path,
++ StorageInfo* device_info) const override;
++
++ DISALLOW_COPY_AND_ASSIGN(StorageMonitorFreeBSD);
++};
++
++} // namespace storage_monitor
++
++#endif // COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_
diff --git a/www/iridium/files/patch-components_sync_base_get__session__name.cc b/www/iridium/files/patch-components_sync_base_get__session__name.cc
new file mode 100644
index 000000000000..380c33d62a44
--- /dev/null
+++ b/www/iridium/files/patch-components_sync_base_get__session__name.cc
@@ -0,0 +1,20 @@
+--- components/sync/base/get_session_name.cc.orig 2017-04-19 19:06:33 UTC
++++ components/sync/base/get_session_name.cc
+@@ -15,7 +15,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "chromeos/system/devicetype.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/sync/base/get_session_name_linux.h"
+ #elif defined(OS_IOS)
+ #include "components/sync/base/get_session_name_ios.h"
+@@ -51,7 +51,7 @@ std::string GetSessionNameSynchronously(
+ session_name = "Chromebook";
+ break;
+ }
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ session_name = internal::GetHostname();
+ #elif defined(OS_IOS)
+ session_name = internal::GetComputerName();
diff --git a/www/iridium/files/patch-components_sync_base_get__session__name__linux.cc b/www/iridium/files/patch-components_sync_base_get__session__name__linux.cc
new file mode 100644
index 000000000000..4fcf01524501
--- /dev/null
+++ b/www/iridium/files/patch-components_sync_base_get__session__name__linux.cc
@@ -0,0 +1,14 @@
+--- components/sync/base/get_session_name_linux.cc.orig 2017-04-19 19:06:33 UTC
++++ components/sync/base/get_session_name_linux.cc
+@@ -13,8 +13,9 @@ namespace syncer {
+ namespace internal {
+
+ std::string GetHostname() {
+- char hostname[HOST_NAME_MAX];
+- if (gethostname(hostname, HOST_NAME_MAX) == 0) // Success.
++ int len = sysconf(_SC_HOST_NAME_MAX);
++ char hostname[len];
++ if (gethostname(hostname, len) == 0) // Success.
+ return hostname;
+ return base::GetLinuxDistro();
+ }
diff --git a/www/iridium/files/patch-components_tracing_child_child__memory__dump__manager__delegate__impl.cc b/www/iridium/files/patch-components_tracing_child_child__memory__dump__manager__delegate__impl.cc
new file mode 100644
index 000000000000..c473b400228f
--- /dev/null
+++ b/www/iridium/files/patch-components_tracing_child_child__memory__dump__manager__delegate__impl.cc
@@ -0,0 +1,11 @@
+--- components/tracing/child/child_memory_dump_manager_delegate_impl.cc.orig 2017-04-19 19:06:33 UTC
++++ components/tracing/child/child_memory_dump_manager_delegate_impl.cc
+@@ -52,7 +52,7 @@ void ChildMemoryDumpManagerDelegateImpl:
+ base::trace_event::MemoryDumpManager::GetInstance()->Initialize(
+ this /* delegate */, false /* is_coordinator */);
+
+-#if !defined(OS_LINUX) && !defined(OS_NACL)
++#if !defined(OS_LINUX) && !defined(OS_NACL) && !defined(OS_BSD)
+ // On linux the browser process takes care of dumping process metrics.
+ // The child process is not allowed to do so due to BPF sandbox.
+ tracing::ProcessMetricsMemoryDumpProvider::RegisterForProcess(
diff --git a/www/iridium/files/patch-components_tracing_common_process__metrics__memory__dump__provider.cc b/www/iridium/files/patch-components_tracing_common_process__metrics__memory__dump__provider.cc
new file mode 100644
index 000000000000..0665a62829ce
--- /dev/null
+++ b/www/iridium/files/patch-components_tracing_common_process__metrics__memory__dump__provider.cc
@@ -0,0 +1,81 @@
+--- components/tracing/common/process_metrics_memory_dump_provider.cc.orig 2017-04-19 19:06:33 UTC
++++ components/tracing/common/process_metrics_memory_dump_provider.cc
+@@ -56,7 +56,7 @@ base::LazyInstance<
+ std::unique_ptr<ProcessMetricsMemoryDumpProvider>>>::Leaky
+ g_dump_providers_map = LAZY_INSTANCE_INITIALIZER;
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ const char kClearPeakRssCommand[] = "5";
+
+ const uint32_t kMaxLineSize = 4096;
+@@ -190,13 +190,13 @@ bool GetResidentSizeFromStatmFile(int fd
+ return num_scanned == 1;
+ }
+
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ std::unique_ptr<base::ProcessMetrics> CreateProcessMetrics(
+ base::ProcessId process) {
+ if (process == base::kNullProcessId)
+ return base::ProcessMetrics::CreateCurrentProcessMetrics();
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ // Just pass ProcessId instead of handle since they are the same in linux and
+ // android.
+ return base::ProcessMetrics::CreateProcessMetrics(process);
+@@ -205,7 +205,7 @@ std::unique_ptr<base::ProcessMetrics> Cr
+ // additional information like ProcessHandle or port provider.
+ NOTREACHED();
+ return std::unique_ptr<base::ProcessMetrics>();
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ }
+
+ } // namespace
+@@ -217,7 +217,7 @@ uint64_t ProcessMetricsMemoryDumpProvide
+ ProcessMetricsMemoryDumpProvider::FactoryFunction
+ ProcessMetricsMemoryDumpProvider::factory_for_testing = nullptr;
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ // static
+ FILE* ProcessMetricsMemoryDumpProvider::proc_smaps_for_testing = nullptr;
+@@ -244,7 +244,7 @@ bool ProcessMetricsMemoryDumpProvider::D
+ pmd->set_has_process_mmaps();
+ return res;
+ }
+-#endif // defined(OS_LINUX) || defined(OS_ANDROID)
++#endif // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ bool ProcessMetricsMemoryDumpProvider::DumpProcessMemoryMaps(
+@@ -620,7 +620,7 @@ bool ProcessMetricsMemoryDumpProvider::D
+
+ #if !defined(OS_IOS)
+ peak_rss_bytes = process_metrics_->GetPeakWorkingSetSize();
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ if (is_rss_peak_resettable_) {
+ std::string clear_refs_file =
+ "/proc/" +
+@@ -670,7 +670,7 @@ bool ProcessMetricsMemoryDumpProvider::D
+ void ProcessMetricsMemoryDumpProvider::PollFastMemoryTotal(
+ uint64_t* memory_total) {
+ *memory_total = 0;
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ int statm_fd = fast_polling_statm_fd_for_testing;
+ if (statm_fd == -1) {
+ if (!fast_polling_statm_fd_.is_valid()) {
+@@ -698,7 +698,7 @@ void ProcessMetricsMemoryDumpProvider::P
+ }
+
+ void ProcessMetricsMemoryDumpProvider::SuspendFastMemoryPolling() {
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ fast_polling_statm_fd_.reset();
+ #endif
+ }
diff --git a/www/iridium/files/patch-components_tracing_common_process__metrics__memory__dump__provider.h b/www/iridium/files/patch-components_tracing_common_process__metrics__memory__dump__provider.h
new file mode 100644
index 000000000000..fb1e1791c314
--- /dev/null
+++ b/www/iridium/files/patch-components_tracing_common_process__metrics__memory__dump__provider.h
@@ -0,0 +1,20 @@
+--- components/tracing/common/process_metrics_memory_dump_provider.h.orig 2017-04-19 19:06:33 UTC
++++ components/tracing/common/process_metrics_memory_dump_provider.h
+@@ -57,7 +57,7 @@ class TRACING_EXPORT ProcessMetricsMemor
+ #elif defined(OS_WIN)
+ FRIEND_TEST_ALL_PREFIXES(ProcessMetricsMemoryDumpProviderTest,
+ TestWinModuleReading);
+-#elif defined(OS_LINUX) || defined(OS_ANDROID)
++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ FRIEND_TEST_ALL_PREFIXES(ProcessMetricsMemoryDumpProviderTest,
+ DoubleRegister);
+ #endif
+@@ -70,7 +70,7 @@ class TRACING_EXPORT ProcessMetricsMemor
+ static uint64_t rss_bytes_for_testing;
+ static FactoryFunction factory_for_testing;
+
+-#if defined(OS_LINUX) || defined(OS_ANDROID)
++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD)
+ static FILE* proc_smaps_for_testing;
+ static int fast_polling_statm_fd_for_testing;
+
diff --git a/www/iridium/files/patch-components_update__client_update__query__params.cc b/www/iridium/files/patch-components_update__client_update__query__params.cc
new file mode 100644
index 000000000000..747606e34f85
--- /dev/null
+++ b/www/iridium/files/patch-components_update__client_update__query__params.cc
@@ -0,0 +1,11 @@
+--- components/update_client/update_query_params.cc.orig 2017-04-19 19:06:33 UTC
++++ components/update_client/update_query_params.cc
+@@ -34,6 +34,8 @@ const char kOs[] =
+ "linux";
+ #elif defined(OS_OPENBSD)
+ "openbsd";
++#elif defined(OS_FREEBSD)
++ "freebsd";
+ #else
+ #error "unknown os"
+ #endif
diff --git a/www/iridium/files/patch-components_url__matcher_regex__set__matcher.cc b/www/iridium/files/patch-components_url__matcher_regex__set__matcher.cc
new file mode 100644
index 000000000000..beccba33cb0a
--- /dev/null
+++ b/www/iridium/files/patch-components_url__matcher_regex__set__matcher.cc
@@ -0,0 +1,16 @@
+--- components/url_matcher/regex_set_matcher.cc.orig 2017-04-19 19:06:33 UTC
++++ components/url_matcher/regex_set_matcher.cc
+@@ -10,8 +10,13 @@
+ #include "base/memory/ptr_util.h"
+ #include "base/strings/string_util.h"
+ #include "components/url_matcher/substring_set_matcher.h"
++#if defined(OS_BSD)
++#include <re2/filtered_re2.h>
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/filtered_re2.h"
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace url_matcher {
+
diff --git a/www/iridium/files/patch-components_url__matcher_url__matcher__factory.cc b/www/iridium/files/patch-components_url__matcher_url__matcher__factory.cc
new file mode 100644
index 000000000000..3ead93f86a2a
--- /dev/null
+++ b/www/iridium/files/patch-components_url__matcher_url__matcher__factory.cc
@@ -0,0 +1,14 @@
+--- components/url_matcher/url_matcher_factory.cc.orig 2017-04-19 19:06:33 UTC
++++ components/url_matcher/url_matcher_factory.cc
+@@ -16,7 +16,11 @@
+ #include "base/values.h"
+ #include "components/url_matcher/url_matcher_constants.h"
+ #include "components/url_matcher/url_matcher_helpers.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace url_matcher {
+
diff --git a/www/iridium/files/patch-components_variations_proto_study.proto b/www/iridium/files/patch-components_variations_proto_study.proto
new file mode 100644
index 000000000000..8e5b7eabe5e3
--- /dev/null
+++ b/www/iridium/files/patch-components_variations_proto_study.proto
@@ -0,0 +1,10 @@
+--- components/variations/proto/study.proto.orig 2017-04-19 19:06:33 UTC
++++ components/variations/proto/study.proto
+@@ -188,6 +188,7 @@ message Study {
+ PLATFORM_CHROMEOS = 3;
+ PLATFORM_ANDROID = 4;
+ PLATFORM_IOS = 5;
++ PLATFORM_BSD = 6;
+ }
+
+ // Possible form factors Chrome is running on.
diff --git a/www/iridium/files/patch-components_webcrypto_algorithms_test__helpers.cc b/www/iridium/files/patch-components_webcrypto_algorithms_test__helpers.cc
new file mode 100644
index 000000000000..83f54165e96b
--- /dev/null
+++ b/www/iridium/files/patch-components_webcrypto_algorithms_test__helpers.cc
@@ -0,0 +1,14 @@
+--- components/webcrypto/algorithms/test_helpers.cc.orig 2017-04-19 19:06:33 UTC
++++ components/webcrypto/algorithms/test_helpers.cc
+@@ -25,7 +25,11 @@
+ #include "components/webcrypto/status.h"
+ #include "third_party/WebKit/public/platform/WebCryptoAlgorithmParams.h"
+ #include "third_party/WebKit/public/platform/WebCryptoKeyAlgorithm.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace webcrypto {
+
diff --git a/www/iridium/files/patch-content_app_BUILD.gn b/www/iridium/files/patch-content_app_BUILD.gn
new file mode 100644
index 000000000000..af5c313738fd
--- /dev/null
+++ b/www/iridium/files/patch-content_app_BUILD.gn
@@ -0,0 +1,11 @@
+--- content/app/BUILD.gn.orig 2017-04-19 19:06:33 UTC
++++ content/app/BUILD.gn
+@@ -68,7 +68,7 @@ template("implement_content_app") {
+ ]
+ }
+
+- if (is_linux && enable_plugins) {
++ if ((is_linux || is_bsd) && enable_plugins) {
+ content_app_deps += [ "//content/ppapi_plugin:ppapi_plugin_sources" ]
+ }
+
diff --git a/www/iridium/files/patch-content_app_content__main__runner.cc b/www/iridium/files/patch-content_app_content__main__runner.cc
new file mode 100644
index 000000000000..6cb01e35ea4e
--- /dev/null
+++ b/www/iridium/files/patch-content_app_content__main__runner.cc
@@ -0,0 +1,42 @@
+--- content/app/content_main_runner.cc.orig 2017-04-19 19:06:33 UTC
++++ content/app/content_main_runner.cc
+@@ -92,10 +92,10 @@
+ #include "base/posix/global_descriptors.h"
+ #include "content/public/common/content_descriptors.h"
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ #include "content/public/common/zygote_fork_delegate_linux.h"
+ #endif
+-#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include "content/zygote/zygote_main.h"
+ #endif
+
+@@ -365,7 +365,7 @@ struct MainFunction {
+ int (*function)(const MainFunctionParams&);
+ };
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ // On platforms that use the zygote, we have a special subset of
+ // subprocesses that are launched via the zygote. This function
+ // fills in some process-launching bits around ZygoteMain().
+@@ -426,7 +426,7 @@ int RunZygote(const MainFunctionParams&
+ NOTREACHED() << "Unknown zygote process type: " << process_type;
+ return 1;
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+
+ static void RegisterMainThreadFactories() {
+ #if !defined(CHROME_MULTIPLE_DLL_BROWSER) && !defined(CHROME_MULTIPLE_DLL_CHILD)
+@@ -492,7 +492,7 @@ int RunNamedProcessTypeMain(
+ }
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ // Zygote startup is special -- see RunZygote comments above
+ // for why we don't use ZygoteMain directly.
+ if (process_type == switches::kZygoteProcess)
diff --git a/www/iridium/files/patch-content_browser_BUILD.gn b/www/iridium/files/patch-content_browser_BUILD.gn
new file mode 100644
index 000000000000..cb60cd2ce3fd
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_BUILD.gn
@@ -0,0 +1,64 @@
+--- content/browser/BUILD.gn.orig 2017-04-19 19:06:33 UTC
++++ content/browser/BUILD.gn
+@@ -1464,11 +1464,6 @@ source_set("browser") {
+ "memory/memory_monitor_chromeos.cc",
+ "memory/memory_monitor_chromeos.h",
+ ]
+- } else {
+- sources += [
+- "memory/memory_monitor_linux.cc",
+- "memory/memory_monitor_linux.h",
+- ]
+ }
+
+ if (!is_win) {
+@@ -1540,7 +1535,7 @@ source_set("browser") {
+
+ # Desktop screen capture implementations, conditionally built depending on
+ # the available implementations for each platform.
+- if (is_linux || is_mac || is_win) {
++ if (is_linux || is_bsd || is_mac || is_win) {
+ defines += [ "ENABLE_SCREEN_CAPTURE=1" ]
+ sources += [
+ "media/capture/cursor_renderer.cc",
+@@ -1727,7 +1722,7 @@ source_set("browser") {
+ }
+ }
+
+- if (is_linux && use_aura) {
++ if ((is_linux || is_bsd) && use_aura) {
+ deps += [ "//build/linux:fontconfig" ]
+ }
+
+@@ -1880,6 +1875,17 @@ source_set("browser") {
+ "//chromeos",
+ "//chromeos:power_manager_proto",
+ ]
++ } else if (is_bsd) {
++ sources -= [
++ "zygote_host/zygote_communication_linux.cc",
++ "zygote_host/zygote_communication_linux.h",
++ "zygote_host/zygote_handle_linux.cc",
++ "zygote_host/zygote_host_impl_linux.cc",
++ "zygote_host/zygote_host_impl_linux.h",
++ "../zygote/zygote_linux.cc",
++ "../zygote/zygote_linux.h",
++ "../zygote/zygote_main_linux.cc",
++ ]
+ }
+
+ if (enable_mojo_media) {
+@@ -1998,11 +2004,11 @@ source_set("browser") {
+ ]
+ }
+
+- if (is_linux && use_dbus) {
++ if ((is_linux || is_bsd) && use_dbus) {
+ deps += [ "//dbus" ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ deps += [ "//third_party/boringssl" ]
+ }
+
diff --git a/www/iridium/files/patch-content_browser_accessibility_browser__accessibility.h b/www/iridium/files/patch-content_browser_accessibility_browser__accessibility.h
new file mode 100644
index 000000000000..a31b6800d819
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_accessibility_browser__accessibility.h
@@ -0,0 +1,11 @@
+--- content/browser/accessibility/browser_accessibility.h.orig 2017-04-19 19:06:33 UTC
++++ content/browser/accessibility/browser_accessibility.h
+@@ -40,7 +40,7 @@
+ #define PLATFORM_HAS_NATIVE_ACCESSIBILITY_IMPL 1
+ #endif
+
+-#if defined(OS_LINUX) && defined(USE_X11) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_X11) && !defined(OS_CHROMEOS)
+ #define PLATFORM_HAS_NATIVE_ACCESSIBILITY_IMPL 1
+ #endif
+
diff --git a/www/iridium/files/patch-content_browser_accessibility_browser__accessibility__manager.h b/www/iridium/files/patch-content_browser_accessibility_browser__accessibility__manager.h
new file mode 100644
index 000000000000..369d986b8455
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_accessibility_browser__accessibility__manager.h
@@ -0,0 +1,20 @@
+--- content/browser/accessibility/browser_accessibility_manager.h.orig 2017-04-19 19:06:33 UTC
++++ content/browser/accessibility/browser_accessibility_manager.h
+@@ -36,7 +36,7 @@ class BrowserAccessibilityManager;
+ class BrowserAccessibilityManagerAndroid;
+ #elif defined(OS_WIN)
+ class BrowserAccessibilityManagerWin;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_X11)
++#elif (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && defined(USE_X11)
+ class BrowserAccessibilityManagerAuraLinux;
+ #elif defined(OS_MACOSX)
+ class BrowserAccessibilityManagerMac;
+@@ -248,7 +248,7 @@ class CONTENT_EXPORT BrowserAccessibilit
+ BrowserAccessibilityManagerAndroid* ToBrowserAccessibilityManagerAndroid();
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_X11)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && defined(USE_X11)
+ BrowserAccessibilityManagerAuraLinux*
+ ToBrowserAccessibilityManagerAuraLinux();
+ #endif
diff --git a/www/iridium/files/patch-content_browser_browser__main__loop.cc b/www/iridium/files/patch-content_browser_browser__main__loop.cc
new file mode 100644
index 000000000000..4a82d008a8d4
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_browser__main__loop.cc
@@ -0,0 +1,40 @@
+--- content/browser/browser_main_loop.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/browser_main_loop.cc
+@@ -210,6 +210,11 @@
+ #include "gpu/vulkan/vulkan_implementation.h"
+ #endif
+
++#if defined(OS_BSD)
++#include "content/common/sandbox_linux/sandbox_linux.h"
++#include "content/child/child_process_sandbox_support_impl_linux.h"
++#endif
++
+ // One of the linux specific headers defines this as a macro.
+ #ifdef DestroyAll
+ #undef DestroyAll
+@@ -218,7 +223,7 @@
+ namespace content {
+ namespace {
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ void SetupSandbox(const base::CommandLine& parsed_command_line) {
+ TRACE_EVENT0("startup", "SetupSandbox");
+ if (parsed_command_line.HasSwitch(switches::kNoZygote)) {
+@@ -584,10 +589,15 @@ void BrowserMainLoop::Init() {
+ void BrowserMainLoop::EarlyInitialization() {
+ TRACE_EVENT0("startup", "BrowserMainLoop::EarlyInitialization");
+
+-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ // No thread should be created before this call, as SetupSandbox()
+ // will end-up using fork().
+ SetupSandbox(parsed_command_line_);
++#elif defined(OS_BSD)
++ RenderSandboxHostLinux::GetInstance()->Init();
++ base::FileHandleMappingVector fds_to_map;
++ const int sfd = RenderSandboxHostLinux::GetInstance()->GetRendererSocket();
++ fds_to_map.push_back(std::make_pair(sfd, GetSandboxFD()));
+ #endif
+
+ #if defined(USE_X11)
diff --git a/www/iridium/files/patch-content_browser_child__process__launcher__helper__linux.cc b/www/iridium/files/patch-content_browser_child__process__launcher__helper__linux.cc
new file mode 100644
index 000000000000..9c98c104da85
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_child__process__launcher__helper__linux.cc
@@ -0,0 +1,49 @@
+--- content/browser/child_process_launcher_helper_linux.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/child_process_launcher_helper_linux.cc
+@@ -67,6 +67,7 @@ ChildProcessLauncherHelper::LaunchProces
+ int* launch_result) {
+ *is_synchronous_launch = true;
+
++#if !defined(OS_BSD)
+ ZygoteHandle* zygote_handle =
+ base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kNoZygote) ?
+ nullptr : delegate_->GetZygote();
+@@ -86,6 +87,7 @@ ChildProcessLauncherHelper::LaunchProces
+ process.zygote = *zygote_handle;
+ return process;
+ }
++#endif
+
+ Process process;
+ process.process = base::LaunchProcess(*command_line(), options);
+@@ -105,10 +107,12 @@ base::TerminationStatus ChildProcessLaun
+ const ChildProcessLauncherHelper::Process& process,
+ bool known_dead,
+ int* exit_code) {
++#if !defined(OS_BSD)
+ if (process.zygote) {
+ return process.zygote->GetTerminationStatus(
+ process.process.Handle(), known_dead, exit_code);
+ }
++#endif
+ if (known_dead) {
+ return base::GetKnownDeadTerminationStatus(
+ process.process.Handle(), exit_code);
+@@ -127,13 +131,17 @@ void ChildProcessLauncherHelper::ForceNo
+ ChildProcessLauncherHelper::Process process) {
+ process.process.Terminate(RESULT_CODE_NORMAL_EXIT, false);
+ // On POSIX, we must additionally reap the child.
++#if !defined(OS_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 !defined(OS_BSD)
+ }
++#endif
+ }
+
+ // static
diff --git a/www/iridium/files/patch-content_browser_devtools_protocol_color__picker.cc b/www/iridium/files/patch-content_browser_devtools_protocol_color__picker.cc
new file mode 100644
index 000000000000..256f998fd97e
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_devtools_protocol_color__picker.cc
@@ -0,0 +1,11 @@
+--- content/browser/devtools/protocol/color_picker.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/devtools/protocol/color_picker.cc
+@@ -153,7 +153,7 @@ void ColorPicker::UpdateCursor() {
+ // magnified projection only with centered hotspot.
+ // Mac Retina requires cursor to be > 120px in order to render smoothly.
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ const float kCursorSize = 63;
+ const float kDiameter = 63;
+ const float kHotspotOffset = 32;
diff --git a/www/iridium/files/patch-content_browser_download_base__file.cc b/www/iridium/files/patch-content_browser_download_base__file.cc
new file mode 100644
index 000000000000..7259a0375d3a
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_download_base__file.cc
@@ -0,0 +1,20 @@
+--- content/browser/download/base_file.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/download/base_file.cc
+@@ -380,7 +380,7 @@ DownloadInterruptReason BaseFile::LogInt
+ return reason;
+ }
+
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+
+ namespace {
+
+@@ -463,7 +463,7 @@ DownloadInterruptReason BaseFile::Annota
+ }
+ return DOWNLOAD_INTERRUPT_REASON_FILE_FAILED;
+ }
+-#else // !OS_WIN && !OS_MACOSX && !OS_LINUX
++#else // !OS_WIN && !OS_MACOSX && !OS_LINUX && !OS_BSD
+ DownloadInterruptReason BaseFile::AnnotateWithSourceInformation(
+ const std::string& client_guid,
+ const GURL& source_url,
diff --git a/www/iridium/files/patch-content_browser_gpu_gpu__data__manager__impl__private.cc b/www/iridium/files/patch-content_browser_gpu_gpu__data__manager__impl__private.cc
new file mode 100644
index 000000000000..a915ad82fe69
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_gpu_gpu__data__manager__impl__private.cc
@@ -0,0 +1,45 @@
+--- content/browser/gpu/gpu_data_manager_impl_private.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/gpu/gpu_data_manager_impl_private.cc
+@@ -396,7 +396,7 @@ bool GpuDataManagerImplPrivate::GpuAcces
+ // strings even if all features are blacklisted. If all GPU features are
+ // disabled, the GPU process will only initialize GL bindings, create a GL
+ // context, and collect full GPU info.
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) || !defined(OS_BSD)
+ if (reason) {
+ *reason = "All GPU features are blacklisted.";
+ }
+@@ -513,8 +513,10 @@ void GpuDataManagerImplPrivate::SetGLStr
+ gpu_info.gl_renderer = gl_renderer;
+ gpu_info.gl_version = gl_version;
+
++#if !defined(OS_BSD)
+ gpu::IdentifyActiveGPU(&gpu_info);
+ gpu::CollectDriverInfoGL(&gpu_info);
++#endif
+
+ UpdateGpuInfo(gpu_info);
+ UpdateGpuSwitchingManager(gpu_info);
+@@ -572,10 +574,12 @@ void GpuDataManagerImplPrivate::Initiali
+ // Skip collecting the basic driver info if SetGpuInfo() is already called.
+ if (IsCompleteGpuInfoAvailable()) {
+ gpu_info = gpu_info_;
++#ifndef OS_BSD
+ } else {
+ TRACE_EVENT0("startup",
+ "GpuDataManagerImpl::Initialize:CollectBasicGraphicsInfo");
+ gpu::CollectBasicGraphicsInfo(&gpu_info);
++#endif
+ }
+
+ if (command_line->HasSwitch(switches::kGpuTestingVendorId) &&
+@@ -686,7 +690,9 @@ void GpuDataManagerImplPrivate::UpdateGp
+ return;
+
+ bool was_info_available = IsCompleteGpuInfoAvailable();
++#ifndef OS_BSD
+ gpu::MergeGPUInfo(&gpu_info_, gpu_info);
++#endif
+ if (IsCompleteGpuInfoAvailable()) {
+ complete_gpu_info_already_requested_ = true;
+ } else if (was_info_available) {
diff --git a/www/iridium/files/patch-content_browser_gpu_gpu__data__manager__impl__private.h b/www/iridium/files/patch-content_browser_gpu_gpu__data__manager__impl__private.h
new file mode 100644
index 000000000000..abdca9652e3a
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_gpu_gpu__data__manager__impl__private.h
@@ -0,0 +1,11 @@
+--- content/browser/gpu/gpu_data_manager_impl_private.h.orig 2017-04-19 19:06:33 UTC
++++ content/browser/gpu/gpu_data_manager_impl_private.h
+@@ -156,7 +156,7 @@ class CONTENT_EXPORT GpuDataManagerImplP
+ UnblockOtherDomainFrom3DAPIs);
+ FRIEND_TEST_ALL_PREFIXES(GpuDataManagerImplPrivateTest,
+ UnblockThisDomainFrom3DAPIs);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ FRIEND_TEST_ALL_PREFIXES(GpuDataManagerImplPrivateTest,
+ SetGLStrings);
+ FRIEND_TEST_ALL_PREFIXES(GpuDataManagerImplPrivateTest,
diff --git a/www/iridium/files/patch-content_browser_gpu_gpu__internals__ui.cc b/www/iridium/files/patch-content_browser_gpu_gpu__internals__ui.cc
new file mode 100644
index 000000000000..6f216ef38b8a
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_gpu_gpu__internals__ui.cc
@@ -0,0 +1,29 @@
+--- content/browser/gpu/gpu_internals_ui.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/gpu/gpu_internals_ui.cc
+@@ -43,7 +43,7 @@
+ #include "third_party/skia/include/core/SkMilestone.h"
+ #include "ui/gl/gpu_switching_manager.h"
+
+-#if defined(OS_LINUX) && defined(USE_X11)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(USE_X11)
+ #include <X11/Xlib.h>
+ #endif
+ #if defined(OS_WIN)
+@@ -51,7 +51,7 @@
+ #include "ui/gfx/win/physical_size.h"
+ #endif
+
+-#if defined(OS_LINUX) && defined(USE_X11)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(USE_X11)
+ #include "ui/base/x/x11_util.h" // nogncheck
+ #include "ui/gfx/x/x11_atom_cache.h" // nogncheck
+ #endif
+@@ -204,7 +204,7 @@ base::DictionaryValue* GpuInfoAsDictiona
+ gpu_info.gl_ws_version));
+ basic_info->Append(NewDescriptionValuePair("Window system binding extensions",
+ gpu_info.gl_ws_extensions));
+-#if defined(OS_LINUX) && defined(USE_X11)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(USE_X11)
+ basic_info->Append(NewDescriptionValuePair("Window manager",
+ ui::GuessWindowManagerName()));
+ {
diff --git a/www/iridium/files/patch-content_browser_gpu_gpu__process__host.cc b/www/iridium/files/patch-content_browser_gpu_gpu__process__host.cc
new file mode 100644
index 000000000000..5ed494d03a45
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_gpu_gpu__process__host.cc
@@ -0,0 +1,11 @@
+--- content/browser/gpu/gpu_process_host.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/gpu/gpu_process_host.cc
+@@ -1024,7 +1024,7 @@ bool GpuProcessHost::LaunchGpuProcess(gp
+ std::unique_ptr<base::CommandLine> cmd_line =
+ base::MakeUnique<base::CommandLine>(base::CommandLine::NO_PROGRAM);
+ #else
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int child_flags = gpu_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF :
+ ChildProcessHost::CHILD_NORMAL;
+ #else
diff --git a/www/iridium/files/patch-content_browser_media_media__internals.cc b/www/iridium/files/patch-content_browser_media_media__internals.cc
new file mode 100644
index 000000000000..71a3e83cb4e0
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_media_media__internals.cc
@@ -0,0 +1,11 @@
+--- content/browser/media/media_internals.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/media/media_internals.cc
+@@ -774,7 +774,7 @@ void MediaInternals::UpdateVideoCaptureD
+ device_dict->SetString("name", descriptor.GetNameAndModel());
+ device_dict->Set("formats", format_list);
+ #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
+- defined(OS_ANDROID)
++ defined(OS_ANDROID) || defined(OS_BSD)
+ device_dict->SetString("captureApi", descriptor.GetCaptureApiTypeString());
+ #endif
+ video_capture_capabilities_cached_data_.Append(std::move(device_dict));
diff --git a/www/iridium/files/patch-content_browser_memory_memory__coordinator__impl.cc b/www/iridium/files/patch-content_browser_memory_memory__coordinator__impl.cc
new file mode 100644
index 000000000000..7255b1f5f590
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_memory_memory__coordinator__impl.cc
@@ -0,0 +1,15 @@
+--- content/browser/memory/memory_coordinator_impl.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/memory/memory_coordinator_impl.cc
+@@ -90,8 +90,12 @@ void MemoryCoordinatorHandleImpl::AddChi
+ struct MemoryCoordinatorImplSingletonTraits
+ : public base::LeakySingletonTraits<MemoryCoordinatorImpl> {
+ static MemoryCoordinatorImpl* New() {
++#if defined(OS_BSD)
++ return nullptr;
++#else
+ return new MemoryCoordinatorImpl(base::ThreadTaskRunnerHandle::Get(),
+ CreateMemoryMonitor());
++#endif
+ }
+ };
+
diff --git a/www/iridium/files/patch-content_browser_memory_memory__monitor.cc b/www/iridium/files/patch-content_browser_memory_memory__monitor.cc
new file mode 100644
index 000000000000..b8f05805dc31
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_memory_memory__monitor.cc
@@ -0,0 +1,21 @@
+--- content/browser/memory/memory_monitor.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/memory/memory_monitor.cc
+@@ -8,6 +8,7 @@
+
+ namespace content {
+
++#if !defined(OS_FREEBSD)
+ // static
+ MemoryMonitorDelegate* MemoryMonitorDelegate::GetInstance() {
+ return base::Singleton<
+@@ -21,8 +22,9 @@ void MemoryMonitorDelegate::GetSystemMem
+ base::SystemMemoryInfoKB* mem_info) {
+ base::GetSystemMemoryInfo(mem_info);
+ }
++#endif // !defined(OS_FREEBSD)
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) && !defined(OS_FREEBSD)
+ // TODO(bashi,bcwhite): Remove when memory monitor for mac is available.
+ std::unique_ptr<MemoryMonitor> CreateMemoryMonitor() {
+ NOTREACHED();
diff --git a/www/iridium/files/patch-content_browser_ppapi__plugin__process__host.cc b/www/iridium/files/patch-content_browser_ppapi__plugin__process__host.cc
new file mode 100644
index 000000000000..0c619fa080c5
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_ppapi__plugin__process__host.cc
@@ -0,0 +1,48 @@
+--- content/browser/ppapi_plugin_process_host.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/ppapi_plugin_process_host.cc
+@@ -55,9 +55,9 @@
+
+ namespace content {
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ ZygoteHandle g_ppapi_zygote;
+-#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ // NOTE: changes to this class need to be reviewed by the security team.
+ class PpapiPluginSandboxedProcessLauncherDelegate
+@@ -111,7 +111,7 @@ class PpapiPluginSandboxedProcessLaunche
+ return true;
+ }
+
+-#elif defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#elif defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ ZygoteHandle* GetZygote() override {
+ const base::CommandLine& browser_command_line =
+ *base::CommandLine::ForCurrentProcess();
+@@ -205,13 +205,13 @@ PpapiPluginProcessHost* PpapiPluginProce
+ return NULL;
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // static
+ void PpapiPluginProcessHost::EarlyZygoteLaunch() {
+ DCHECK(!g_ppapi_zygote);
+ g_ppapi_zygote = CreateZygote();
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ // static
+ void PpapiPluginProcessHost::DidCreateOutOfProcessInstance(
+@@ -363,7 +363,7 @@ bool PpapiPluginProcessHost::Init(const
+ base::CommandLine::StringType plugin_launcher =
+ browser_command_line.GetSwitchValueNative(switches::kPpapiPluginLauncher);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int flags = plugin_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF :
+ ChildProcessHost::CHILD_NORMAL;
+ #else
diff --git a/www/iridium/files/patch-content_browser_renderer__host_media_video__capture__manager.cc b/www/iridium/files/patch-content_browser_renderer__host_media_video__capture__manager.cc
new file mode 100644
index 000000000000..80794c4b03b6
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_renderer__host_media_video__capture__manager.cc
@@ -0,0 +1,20 @@
+--- content/browser/renderer_host/media/video_capture_manager.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/renderer_host/media/video_capture_manager.cc
+@@ -645,7 +645,7 @@ VideoCaptureManager::DoStartTabCaptureOn
+ DCHECK(IsOnDeviceThread());
+
+ std::unique_ptr<VideoCaptureDevice> video_capture_device;
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ video_capture_device = WebContentsVideoCaptureDevice::Create(id);
+ #endif
+
+@@ -675,7 +675,7 @@ VideoCaptureManager::DoStartDesktopCaptu
+ }
+
+ if (desktop_id.type == DesktopMediaID::TYPE_WEB_CONTENTS) {
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ video_capture_device = WebContentsVideoCaptureDevice::Create(id);
+ IncrementDesktopCaptureCounter(TAB_VIDEO_CAPTURER_CREATED);
+ if (desktop_id.audio_share) {
diff --git a/www/iridium/files/patch-content_browser_renderer__host_render__message__filter.cc b/www/iridium/files/patch-content_browser_renderer__host_render__message__filter.cc
new file mode 100644
index 000000000000..8a37fe2c789d
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_renderer__host_render__message__filter.cc
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_message_filter.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/renderer_host/render_message_filter.cc
+@@ -89,7 +89,7 @@
+ #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/linux_util.h"
+ #include "base/threading/platform_thread.h"
+ #endif
diff --git a/www/iridium/files/patch-content_browser_renderer__host_render__message__filter.h b/www/iridium/files/patch-content_browser_renderer__host_render__message__filter.h
new file mode 100644
index 000000000000..3eda08ad248d
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_renderer__host_render__message__filter.h
@@ -0,0 +1,11 @@
+--- content/browser/renderer_host/render_message_filter.h.orig 2017-04-19 19:06:33 UTC
++++ content/browser/renderer_host/render_message_filter.h
+@@ -132,7 +132,7 @@ class CONTENT_EXPORT RenderMessageFilter
+ const std::list<base::ProcessHandle>& handles);
+ void OnResolveProxy(const GURL& url, IPC::Message* reply_msg);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriorityOnFileThread(base::PlatformThreadId ns_tid,
+ base::ThreadPriority priority);
+ void OnSetThreadPriority(base::PlatformThreadId ns_tid,
diff --git a/www/iridium/files/patch-content_browser_renderer__host_render__process__host__impl.cc b/www/iridium/files/patch-content_browser_renderer__host_render__process__host__impl.cc
new file mode 100644
index 000000000000..5f249d3ac7cf
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_renderer__host_render__process__host__impl.cc
@@ -0,0 +1,52 @@
+--- content/browser/renderer_host/render_process_host_impl.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/renderer_host/render_process_host_impl.cc
+@@ -378,11 +378,11 @@ SiteProcessMap* GetSiteProcessMapForBrow
+ return map;
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // This static member variable holds the zygote communication information for
+ // the renderer.
+ ZygoteHandle g_render_zygote;
+-#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ // NOTE: changes to this class need to be reviewed by the security team.
+ class RendererSandboxedProcessLauncherDelegate
+@@ -405,7 +405,7 @@ class RendererSandboxedProcessLauncherDe
+ return GetContentClient()->browser()->PreSpawnRenderer(policy);
+ }
+
+-#elif defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#elif defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ ZygoteHandle* GetZygote() override {
+ const base::CommandLine& browser_command_line =
+ *base::CommandLine::ForCurrentProcess();
+@@ -655,7 +655,7 @@ void RenderProcessHost::SetMaxRendererPr
+ g_max_renderer_count_override = count;
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // static
+ void RenderProcessHostImpl::EarlyZygoteLaunch() {
+ DCHECK(!g_render_zygote);
+@@ -665,7 +665,7 @@ void RenderProcessHostImpl::EarlyZygoteL
+ ZygoteHostImpl::GetInstance()->SetRendererSandboxStatus(
+ (*GetGenericZygote())->GetSandboxStatus());
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ RenderProcessHostImpl::RenderProcessHostImpl(
+ BrowserContext* browser_context,
+@@ -813,7 +813,7 @@ bool RenderProcessHostImpl::Init() {
+ renderer_prefix =
+ browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int flags = renderer_prefix.empty() ? ChildProcessHost::CHILD_ALLOW_SELF
+ : ChildProcessHost::CHILD_NORMAL;
+ #else
diff --git a/www/iridium/files/patch-content_browser_renderer__host_render__view__host__impl.cc b/www/iridium/files/patch-content_browser_renderer__host_render__view__host__impl.cc
new file mode 100644
index 000000000000..b9754b11794a
--- /dev/null
+++ b/www/iridium/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 2017-04-19 19:06:33 UTC
++++ content/browser/renderer_host/render_view_host_impl.cc
+@@ -140,7 +140,7 @@ void GetPlatformSpecificPrefs(RendererPr
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CYVSCROLL);
+ prefs->arrow_bitmap_width_horizontal_scroll_bar_in_dips =
+ display::win::ScreenWin::GetSystemMetricsInDIP(SM_CXHSCROLL);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ prefs->system_font_family_name = gfx::Font().GetFontName();
+ #endif
+ }
diff --git a/www/iridium/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc b/www/iridium/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
new file mode 100644
index 000000000000..6baa618efc5d
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc
@@ -0,0 +1,29 @@
+--- content/browser/renderer_host/render_widget_host_view_aura.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/renderer_host/render_widget_host_view_aura.cc
+@@ -116,7 +116,7 @@
+ #include "content/browser/accessibility/browser_accessibility_auralinux.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+ #endif
+@@ -2031,7 +2031,7 @@ bool RenderWidgetHostViewAura::NeedsInpu
+ }
+
+ bool RenderWidgetHostViewAura::NeedsMouseCapture() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ return NeedsInputGrab();
+ #endif
+ return false;
+@@ -2231,7 +2231,7 @@ void RenderWidgetHostViewAura::ForwardKe
+ if (!target_host)
+ return;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ ui::TextEditKeyBindingsDelegateAuraLinux* keybinding_delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
diff --git a/www/iridium/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc b/www/iridium/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc
new file mode 100644
index 000000000000..f40b8d12544c
--- /dev/null
+++ b/www/iridium/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 2017-04-19 19:06:33 UTC
++++ content/browser/renderer_host/render_widget_host_view_event_handler.cc
+@@ -546,7 +546,7 @@ bool RenderWidgetHostViewEventHandler::C
+ if (event->type() == ui::ET_MOUSE_EXITED) {
+ if (mouse_locked || selection_popup)
+ return false;
+-#if defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_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/iridium/files/patch-content_browser_tracing_tracing__controller__impl.cc b/www/iridium/files/patch-content_browser_tracing_tracing__controller__impl.cc
new file mode 100644
index 000000000000..6c766bac646d
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_tracing_tracing__controller__impl.cc
@@ -0,0 +1,20 @@
+--- content/browser/tracing/tracing_controller_impl.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/tracing/tracing_controller_impl.cc
+@@ -476,7 +476,7 @@ void TracingControllerImpl::AddTraceMess
+ return;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux the browser process dumps process metrics for child process due to
+ // sandbox.
+ tracing::ProcessMetricsMemoryDumpProvider::RegisterForProcess(
+@@ -504,7 +504,7 @@ void TracingControllerImpl::RemoveTraceM
+ return;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ tracing::ProcessMetricsMemoryDumpProvider::UnregisterForProcess(
+ trace_message_filter->peer_pid());
+ #endif
diff --git a/www/iridium/files/patch-content_browser_utility__process__host__impl.cc b/www/iridium/files/patch-content_browser_utility__process__host__impl.cc
new file mode 100644
index 000000000000..53a1355b6f89
--- /dev/null
+++ b/www/iridium/files/patch-content_browser_utility__process__host__impl.cc
@@ -0,0 +1,94 @@
+--- content/browser/utility_process_host_impl.cc.orig 2017-04-19 19:06:33 UTC
++++ content/browser/utility_process_host_impl.cc
+@@ -44,9 +44,9 @@
+ #include "services/service_manager/public/cpp/interface_provider.h"
+ #include "ui/base/ui_base_switches.h"
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ #include "content/public/browser/zygote_handle_linux.h"
+-#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ #if defined(OS_WIN)
+ #include "sandbox/win/src/sandbox_policy.h"
+@@ -55,11 +55,11 @@
+
+ namespace content {
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ namespace {
+ ZygoteHandle g_utility_zygote;
+ } // namespace
+-#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ // NOTE: changes to this class need to be reviewed by the security team.
+ class UtilitySandboxedProcessLauncherDelegate
+@@ -74,10 +74,10 @@ class UtilitySandboxedProcessLauncherDel
+ launch_elevated_(launch_elevated)
+ #elif defined(OS_POSIX)
+ env_(env)
+-#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ ,
+ no_sandbox_(no_sandbox)
+-#endif // !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#endif // !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #endif // OS_WIN
+ {}
+
+@@ -106,13 +106,13 @@ class UtilitySandboxedProcessLauncherDel
+
+ #elif defined(OS_POSIX)
+
+-#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ ZygoteHandle* GetZygote() override {
+ if (no_sandbox_ || !exposed_dir_.empty())
+ return nullptr;
+ return GetGenericZygote();
+ }
+-#endif // !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#endif // !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ base::EnvironmentMap GetEnvironment() override { return env_; }
+ #endif // OS_WIN
+
+@@ -127,9 +127,9 @@ class UtilitySandboxedProcessLauncherDel
+ bool launch_elevated_;
+ #elif defined(OS_POSIX)
+ base::EnvironmentMap env_;
+-#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ bool no_sandbox_;
+-#endif // !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#endif // !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #endif // OS_WIN
+ };
+
+@@ -154,7 +154,7 @@ UtilityProcessHostImpl::UtilityProcessHo
+ is_batch_mode_(false),
+ no_sandbox_(false),
+ run_elevated_(false),
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ child_flags_(ChildProcessHost::CHILD_ALLOW_SELF),
+ #else
+ child_flags_(ChildProcessHost::CHILD_NORMAL),
+@@ -236,13 +236,13 @@ void UtilityProcessHostImpl::SetName(con
+ name_ = name;
+ }
+
+-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+ // static
+ void UtilityProcessHostImpl::EarlyZygoteLaunch() {
+ DCHECK(!g_utility_zygote);
+ g_utility_zygote = CreateZygote();
+ }
+-#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX)
++#endif // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ bool UtilityProcessHostImpl::StartProcess() {
+ if (started_)
diff --git a/www/iridium/files/patch-content_child_child__process.cc b/www/iridium/files/patch-content_child_child__process.cc
new file mode 100644
index 000000000000..3e2c0ae2cacb
--- /dev/null
+++ b/www/iridium/files/patch-content_child_child__process.cc
@@ -0,0 +1,11 @@
+--- content/child/child_process.cc.orig 2017-04-19 19:06:33 UTC
++++ content/child/child_process.cc
+@@ -133,7 +133,7 @@ void ChildProcess::ReleaseProcess() {
+ main_thread_->OnProcessFinalRelease();
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void ChildProcess::SetIOThreadPriority(
+ base::ThreadPriority io_thread_priority) {
+ main_thread_->SetThreadPriority(io_thread_.GetThreadId(), io_thread_priority);
diff --git a/www/iridium/files/patch-content_child_child__process.h b/www/iridium/files/patch-content_child_child__process.h
new file mode 100644
index 000000000000..7c9704e99204
--- /dev/null
+++ b/www/iridium/files/patch-content_child_child__process.h
@@ -0,0 +1,11 @@
+--- content/child/child_process.h.orig 2017-04-19 19:06:33 UTC
++++ content/child/child_process.h
+@@ -82,7 +82,7 @@ class CONTENT_EXPORT ChildProcess {
+ void AddRefProcess();
+ void ReleaseProcess();
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetIOThreadPriority(base::ThreadPriority io_thread_priority);
+ #endif
+
diff --git a/www/iridium/files/patch-content_child_child__thread__impl.cc b/www/iridium/files/patch-content_child_child__thread__impl.cc
new file mode 100644
index 000000000000..81a97b393980
--- /dev/null
+++ b/www/iridium/files/patch-content_child_child__thread__impl.cc
@@ -0,0 +1,11 @@
+--- content/child/child_thread_impl.cc.orig 2017-04-19 19:06:33 UTC
++++ content/child/child_thread_impl.cc
+@@ -699,7 +699,7 @@ std::unique_ptr<base::SharedMemory> Chil
+ return base::MakeUnique<base::SharedMemory>(shared_buf, false);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void ChildThreadImpl::SetThreadPriority(base::PlatformThreadId id,
+ base::ThreadPriority priority) {
+ Send(new ChildProcessHostMsg_SetThreadPriority(id, priority));
diff --git a/www/iridium/files/patch-content_child_child__thread__impl.h b/www/iridium/files/patch-content_child_child__thread__impl.h
new file mode 100644
index 000000000000..47c1eff9899c
--- /dev/null
+++ b/www/iridium/files/patch-content_child_child__thread__impl.h
@@ -0,0 +1,11 @@
+--- content/child/child_thread_impl.h.orig 2017-04-19 19:06:33 UTC
++++ content/child/child_thread_impl.h
+@@ -116,7 +116,7 @@ class CONTENT_EXPORT ChildThreadImpl
+ static std::unique_ptr<base::SharedMemory> AllocateSharedMemory(
+ size_t buf_size);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ void SetThreadPriority(base::PlatformThreadId id,
+ base::ThreadPriority priority);
+ #endif
diff --git a/www/iridium/files/patch-content_common_BUILD.gn b/www/iridium/files/patch-content_common_BUILD.gn
new file mode 100644
index 000000000000..8ff43c05c1a2
--- /dev/null
+++ b/www/iridium/files/patch-content_common_BUILD.gn
@@ -0,0 +1,28 @@
+--- content/common/BUILD.gn.orig 2017-04-19 19:06:33 UTC
++++ content/common/BUILD.gn
+@@ -503,7 +503,7 @@ source_set("common") {
+ }
+
+ if (!use_seccomp_bpf) {
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources -= [
+ "sandbox_linux/bpf_cros_arm_gpu_policy_linux.cc",
+ "sandbox_linux/bpf_cros_arm_gpu_policy_linux.h",
+@@ -517,6 +517,16 @@ source_set("common") {
+ "sandbox_linux/bpf_utility_policy_linux.h",
+ "sandbox_linux/sandbox_bpf_base_policy_linux.cc",
+ "sandbox_linux/sandbox_bpf_base_policy_linux.h",
++ "sandbox_linux/sandbox_seccomp_bpf_linux.cc",
++ "sandbox_linux/sandbox_seccomp_bpf_linux.h",
++ ]
++ }
++ if (is_bsd) {
++ sources -= [
++ "quarantine/quarantine_linux.cc",
++ "sandbox_linux/sandbox_linux.cc",
++ "sandbox_linux/sandbox_linux.h",
++ "sandbox_linux/sandbox_init_linux.cc",
+ ]
+ }
+ if (is_android) {
diff --git a/www/iridium/files/patch-content_common_child__process__messages.h b/www/iridium/files/patch-content_common_child__process__messages.h
new file mode 100644
index 000000000000..d9d8582ae089
--- /dev/null
+++ b/www/iridium/files/patch-content_common_child__process__messages.h
@@ -0,0 +1,29 @@
+--- content/common/child_process_messages.h.orig 2017-04-19 19:06:33 UTC
++++ content/common/child_process_messages.h
+@@ -26,7 +26,7 @@
+ #include "ui/gfx/ipc/gfx_param_traits.h"
+ #include "ui/gfx/ipc/skia/gfx_skia_param_traits.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/threading/platform_thread.h"
+ #endif
+
+@@ -75,7 +75,7 @@ IPC_STRUCT_TRAITS_BEGIN(tracked_objects:
+ IPC_STRUCT_TRAITS_MEMBER(process_id)
+ IPC_STRUCT_TRAITS_END()
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ IPC_ENUM_TRAITS_MAX_VALUE(base::ThreadPriority,
+ base::ThreadPriority::REALTIME_AUDIO)
+ #endif
+@@ -171,7 +171,7 @@ IPC_SYNC_MESSAGE_CONTROL1_0(ChildProcess
+ IPC_MESSAGE_CONTROL0(ChildProcessHostMsg_ReleaseCachedFonts)
+ #endif // defined(OS_WIN)
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Asks the browser to change the priority of thread.
+ IPC_MESSAGE_CONTROL2(ChildProcessHostMsg_SetThreadPriority,
+ base::PlatformThreadId,
diff --git a/www/iridium/files/patch-content_common_content__switches__internal.cc b/www/iridium/files/patch-content_common_content__switches__internal.cc
new file mode 100644
index 000000000000..0977c854a6ea
--- /dev/null
+++ b/www/iridium/files/patch-content_common_content__switches__internal.cc
@@ -0,0 +1,11 @@
+--- content/common/content_switches_internal.cc.orig 2017-04-19 19:06:33 UTC
++++ content/common/content_switches_internal.cc
+@@ -27,7 +27,7 @@ const base::Feature kUseZoomForDsfEnable
+ #endif
+
+ bool IsUseZoomForDSFEnabledByDefault() {
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ return true;
+ #elif defined(OS_WIN)
+ return base::FeatureList::IsEnabled(kUseZoomForDsfEnabledByDefault);
diff --git a/www/iridium/files/patch-content_common_sandbox__linux_sandbox__debug__handling__linux.cc b/www/iridium/files/patch-content_common_sandbox__linux_sandbox__debug__handling__linux.cc
new file mode 100644
index 000000000000..69c0bf655f1a
--- /dev/null
+++ b/www/iridium/files/patch-content_common_sandbox__linux_sandbox__debug__handling__linux.cc
@@ -0,0 +1,29 @@
+--- content/common/sandbox_linux/sandbox_debug_handling_linux.cc.orig 2017-04-19 19:06:34 UTC
++++ content/common/sandbox_linux/sandbox_debug_handling_linux.cc
+@@ -7,7 +7,9 @@
+ #include <errno.h>
+ #include <signal.h>
+ #include <stddef.h>
++#if 0 // no OS_FREEBSD here?
+ #include <sys/prctl.h>
++#endif
+ #include <unistd.h>
+
+ #include "base/command_line.h"
+@@ -69,12 +71,16 @@ bool SandboxDebugHandling::SetDumpableSt
+ return true;
+ }
+
++#if 0 // no OS_FREEBSD here?
+ if (prctl(PR_SET_DUMPABLE, 0) != 0) {
+ PLOG(ERROR) << "Failed to set non-dumpable flag";
+ return false;
+ }
+
+ return prctl(PR_GET_DUMPABLE) == 0;
++#else
++ return false;
++#endif
+ }
+
+ } // namespace content
diff --git a/www/iridium/files/patch-content_common_set__process__title__linux.cc b/www/iridium/files/patch-content_common_set__process__title__linux.cc
new file mode 100644
index 000000000000..fbda01a227e6
--- /dev/null
+++ b/www/iridium/files/patch-content_common_set__process__title__linux.cc
@@ -0,0 +1,19 @@
+--- content/common/set_process_title_linux.cc.orig 2017-04-19 19:06:34 UTC
++++ content/common/set_process_title_linux.cc
+@@ -49,6 +49,8 @@
+ extern char** environ;
+
+ static char** g_main_argv = NULL;
++
++#if !defined(OS_FREEBSD)
+ static char* g_orig_argv0 = NULL;
+
+ void setproctitle(const char* fmt, ...) {
+@@ -101,6 +103,7 @@ void setproctitle(const char* fmt, ...)
+ va_end(ap);
+ g_main_argv[1] = NULL;
+ }
++#endif
+
+ // A version of this built into glibc would not need this function, since
+ // it could stash the argv pointer in __libc_start_main(). But we need it.
diff --git a/www/iridium/files/patch-content_common_set__process__title__linux.h b/www/iridium/files/patch-content_common_set__process__title__linux.h
new file mode 100644
index 000000000000..8abe8aa10619
--- /dev/null
+++ b/www/iridium/files/patch-content_common_set__process__title__linux.h
@@ -0,0 +1,20 @@
+--- content/common/set_process_title_linux.h.orig 2017-04-19 19:06:34 UTC
++++ content/common/set_process_title_linux.h
+@@ -5,6 +5,9 @@
+ #ifndef CONTENT_COMMON_SET_PROCESS_TITLE_LINUX_H_
+ #define CONTENT_COMMON_SET_PROCESS_TITLE_LINUX_H_
+
++#include "build/build_config.h"
++
++#if !defined(OS_FREEBSD)
+ // Set the process title that will show in "ps" and similar tools. Takes
+ // printf-style format string and arguments. After calling setproctitle()
+ // the original main() argv[] array should not be used. By default, the
+@@ -14,6 +17,7 @@
+ // This signature and naming is to be compatible with most other Unix
+ // implementations of setproctitle().
+ void setproctitle(const char* fmt, ...);
++#endif
+
+ // Initialize state needed for setproctitle() on Linux. Pass the argv pointer
+ // from main() to setproctitle_init() before calling setproctitle().
diff --git a/www/iridium/files/patch-content_common_view__messages.h b/www/iridium/files/patch-content_common_view__messages.h
new file mode 100644
index 000000000000..77344b30003d
--- /dev/null
+++ b/www/iridium/files/patch-content_common_view__messages.h
@@ -0,0 +1,11 @@
+--- content/common/view_messages.h.orig 2017-04-19 19:06:34 UTC
++++ content/common/view_messages.h
+@@ -245,7 +245,7 @@ IPC_STRUCT_TRAITS_BEGIN(content::Rendere
+ IPC_STRUCT_TRAITS_MEMBER(plugin_fullscreen_allowed)
+ IPC_STRUCT_TRAITS_MEMBER(use_video_overlay_for_embedded_encrypted_video)
+ IPC_STRUCT_TRAITS_MEMBER(network_contry_iso)
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ IPC_STRUCT_TRAITS_MEMBER(system_font_family_name)
+ #endif
+ #if defined(OS_WIN)
diff --git a/www/iridium/files/patch-content_gpu_BUILD.gn b/www/iridium/files/patch-content_gpu_BUILD.gn
new file mode 100644
index 000000000000..fad94ee0628b
--- /dev/null
+++ b/www/iridium/files/patch-content_gpu_BUILD.gn
@@ -0,0 +1,10 @@
+--- content/gpu/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ content/gpu/BUILD.gn
+@@ -98,6 +98,7 @@ target(link_target_type, "gpu_sources")
+
+ if (use_x11) {
+ deps += [ "//ui/events/platform/x11" ]
++ configs += [ "//build/config/linux:x11" ]
+ }
+
+ if (use_ozone) {
diff --git a/www/iridium/files/patch-content_gpu_gpu__child__thread.cc b/www/iridium/files/patch-content_gpu_gpu__child__thread.cc
new file mode 100644
index 000000000000..2426bcefc074
--- /dev/null
+++ b/www/iridium/files/patch-content_gpu_gpu__child__thread.cc
@@ -0,0 +1,18 @@
+--- content/gpu/gpu_child_thread.cc.orig 2017-04-19 19:06:34 UTC
++++ content/gpu/gpu_child_thread.cc
+@@ -398,6 +398,7 @@ void GpuChildThread::OnCollectGraphicsIn
+ }
+ #endif
+
++#if !defined(OS_BSD)
+ #if defined(OS_WIN)
+ // GPU full info collection should only happen on un-sandboxed GPU process
+ // or single process/in-process gpu mode on Windows.
+@@ -420,6 +421,7 @@ void GpuChildThread::OnCollectGraphicsIn
+ base::MessageLoop::current()->QuitWhenIdle();
+ }
+ #endif // OS_WIN
++#endif // XXX(rene) !FreeBSD
+ }
+
+ void GpuChildThread::OnClean() {
diff --git a/www/iridium/files/patch-content_gpu_gpu__main.cc b/www/iridium/files/patch-content_gpu_gpu__main.cc
new file mode 100644
index 000000000000..accef8f0c411
--- /dev/null
+++ b/www/iridium/files/patch-content_gpu_gpu__main.cc
@@ -0,0 +1,29 @@
+--- content/gpu/gpu_main.cc.orig 2017-04-19 19:06:34 UTC
++++ content/gpu/gpu_main.cc
+@@ -98,7 +98,7 @@ namespace content {
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread*);
+ #elif defined(OS_WIN)
+ bool StartSandboxWindows(const sandbox::SandboxInterfaceInfo*);
+@@ -152,7 +152,7 @@ class ContentSandboxHelper : public gpu:
+
+ bool EnsureSandboxInitialized(
+ gpu::GpuWatchdogThread* watchdog_thread) override {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ return StartSandboxLinux(watchdog_thread);
+ #elif defined(OS_WIN)
+ return StartSandboxWindows(sandbox_info_);
+@@ -313,7 +313,7 @@ int GpuMain(const MainFunctionParams& pa
+
+ namespace {
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) && !defined(OS_BSD)
+ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdog_thread) {
+ TRACE_EVENT0("gpu,startup", "Initialize sandbox");
+
diff --git a/www/iridium/files/patch-content_gpu_in__process__gpu__thread.cc b/www/iridium/files/patch-content_gpu_in__process__gpu__thread.cc
new file mode 100644
index 000000000000..13d080922412
--- /dev/null
+++ b/www/iridium/files/patch-content_gpu_in__process__gpu__thread.cc
@@ -0,0 +1,11 @@
+--- content/gpu/in_process_gpu_thread.cc.orig 2017-04-19 19:06:34 UTC
++++ content/gpu/in_process_gpu_thread.cc
+@@ -54,8 +54,6 @@ void InProcessGpuThread::Init() {
+ gpu::GPUInfo gpu_info;
+ if (!gl::init::InitializeGLOneOff())
+ VLOG(1) << "gl::init::InitializeGLOneOff failed";
+- else
+- gpu::CollectContextGraphicsInfo(&gpu_info);
+
+ gpu::GpuFeatureInfo gpu_feature_info =
+ gpu::GetGpuFeatureInfo(gpu_info, *base::CommandLine::ForCurrentProcess());
diff --git a/www/iridium/files/patch-content_public_common_child__process__host.h b/www/iridium/files/patch-content_public_common_child__process__host.h
new file mode 100644
index 000000000000..aeebc99f3111
--- /dev/null
+++ b/www/iridium/files/patch-content_public_common_child__process__host.h
@@ -0,0 +1,20 @@
+--- content/public/common/child_process_host.h.orig 2017-04-19 19:06:34 UTC
++++ content/public/common/child_process_host.h
+@@ -54,7 +54,7 @@ class CONTENT_EXPORT ChildProcessHost :
+ // No special behavior requested.
+ CHILD_NORMAL = 0,
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Indicates that the child execed after forking may be execced from
+ // /proc/self/exe rather than using the "real" app path. This prevents
+ // autoupdate from confusing us if it changes the file out from under us.
+@@ -63,7 +63,7 @@ class CONTENT_EXPORT ChildProcessHost :
+ // gdb). In this case, you'd use GetChildPath to get the real executable
+ // file name, and then prepend the GDB command to the command line.
+ CHILD_ALLOW_SELF = 1 << 0,
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ };
+
+ // Returns the pathname to be used for a child process. If a subprocess
diff --git a/www/iridium/files/patch-content_public_common_content__switches.cc b/www/iridium/files/patch-content_public_common_content__switches.cc
new file mode 100644
index 000000000000..1eeccd159f80
--- /dev/null
+++ b/www/iridium/files/patch-content_public_common_content__switches.cc
@@ -0,0 +1,11 @@
+--- content/public/common/content_switches.cc.orig 2017-04-19 19:06:34 UTC
++++ content/public/common/content_switches.cc
+@@ -1006,7 +1006,7 @@ const char kDisableVaapiAcceleratedVideo
+ "disable-vaapi-accelerated-video-encode";
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ // 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/iridium/files/patch-content_public_common_content__switches.h b/www/iridium/files/patch-content_public_common_content__switches.h
new file mode 100644
index 000000000000..d7035c6cbe4e
--- /dev/null
+++ b/www/iridium/files/patch-content_public_common_content__switches.h
@@ -0,0 +1,11 @@
+--- content/public/common/content_switches.h.orig 2017-04-19 19:06:34 UTC
++++ content/public/common/content_switches.h
+@@ -294,7 +294,7 @@ CONTENT_EXPORT extern const char kDisabl
+ CONTENT_EXPORT extern const char kDisableVaapiAcceleratedVideoEncode[];
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ CONTENT_EXPORT extern const char kEnableSpeechDispatcher[];
+ #endif
+
diff --git a/www/iridium/files/patch-content_public_common_renderer__preferences.h b/www/iridium/files/patch-content_public_common_renderer__preferences.h
new file mode 100644
index 000000000000..4a5a14052710
--- /dev/null
+++ b/www/iridium/files/patch-content_public_common_renderer__preferences.h
@@ -0,0 +1,11 @@
+--- content/public/common/renderer_preferences.h.orig 2017-04-19 19:06:34 UTC
++++ content/public/common/renderer_preferences.h
+@@ -131,7 +131,7 @@ struct CONTENT_EXPORT RendererPreference
+ // Country iso of the mobile network for content detection purpose.
+ std::string network_contry_iso;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ std::string system_font_family_name;
+ #endif
+
diff --git a/www/iridium/files/patch-content_public_test_browser__test__base.cc b/www/iridium/files/patch-content_public_test_browser__test__base.cc
new file mode 100644
index 000000000000..8f203ac3f714
--- /dev/null
+++ b/www/iridium/files/patch-content_public_test_browser__test__base.cc
@@ -0,0 +1,13 @@
+--- content/public/test/browser_test_base.cc.orig 2017-04-19 19:06:34 UTC
++++ content/public/test/browser_test_base.cc
+@@ -6,6 +6,10 @@
+
+ #include <stddef.h>
+
++#if defined(OS_FREEBSD)
++#include <sys/signal.h>
++#endif
++
+ #include "base/bind.h"
+ #include "base/command_line.h"
+ #include "base/debug/stack_trace.h"
diff --git a/www/iridium/files/patch-content_renderer_media_webrtc_processed__local__audio__source.cc b/www/iridium/files/patch-content_renderer_media_webrtc_processed__local__audio__source.cc
new file mode 100644
index 000000000000..efb2042b2d60
--- /dev/null
+++ b/www/iridium/files/patch-content_renderer_media_webrtc_processed__local__audio__source.cc
@@ -0,0 +1,13 @@
+--- content/renderer/media/webrtc/processed_local_audio_source.cc.orig 2017-04-19 19:06:34 UTC
++++ content/renderer/media/webrtc/processed_local_audio_source.cc
+@@ -269,8 +269,8 @@ void ProcessedLocalAudioSource::Capture(
+ bool key_pressed) {
+ #if defined(OS_WIN) || defined(OS_MACOSX)
+ DCHECK_LE(volume, 1.0);
+-#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_OPENBSD)
+- // We have a special situation on Linux where the microphone volume can be
++#elif defined(OS_POSIX) && !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
++ // We have a special situation on POSIX 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
+ // even if the reported maximum levels is N, the actual microphone level can
diff --git a/www/iridium/files/patch-content_renderer_render__thread__impl.cc b/www/iridium/files/patch-content_renderer_render__thread__impl.cc
new file mode 100644
index 000000000000..19d8e97b4e56
--- /dev/null
+++ b/www/iridium/files/patch-content_renderer_render__thread__impl.cc
@@ -0,0 +1,34 @@
+--- content/renderer/render_thread_impl.cc.orig 2017-04-19 19:06:34 UTC
++++ content/renderer/render_thread_impl.cc
+@@ -206,11 +206,13 @@
+ #include "content/common/external_ipc_dumper.h"
+ #endif
+
++#if !defined(OS_BSD)
+ #if defined(OS_MACOSX)
+ #include <malloc/malloc.h>
+ #else
+ #include <malloc.h>
+ #endif
++#endif
+
+ using base::ThreadRestrictions;
+ using blink::WebDocument;
+@@ -1379,7 +1381,7 @@ media::GpuVideoAcceleratorFactories* Ren
+ const bool enable_video_accelerator =
+ !cmd_line->HasSwitch(switches::kDisableAcceleratedVideoDecode);
+ const bool enable_gpu_memory_buffer_video_frames =
+-#if defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ !cmd_line->HasSwitch(switches::kDisableGpuMemoryBufferVideoFrames) &&
+ !cmd_line->HasSwitch(switches::kDisableGpuCompositing) &&
+ !gpu_channel_host->gpu_info().software_rendering;
+@@ -1712,6 +1714,8 @@ void RenderThreadImpl::GetRendererMemory
+ #else
+ size_t malloc_usage = minfo.hblkhd + minfo.arena;
+ #endif
++#elif defined(OS_BSD)
++ size_t malloc_usage = 0;
+ #else
+ size_t malloc_usage = GetMallocUsage();
+ #endif
diff --git a/www/iridium/files/patch-content_renderer_renderer__blink__platform__impl.cc b/www/iridium/files/patch-content_renderer_renderer__blink__platform__impl.cc
new file mode 100644
index 000000000000..2311ab52faf1
--- /dev/null
+++ b/www/iridium/files/patch-content_renderer_renderer__blink__platform__impl.cc
@@ -0,0 +1,56 @@
+--- content/renderer/renderer_blink_platform_impl.cc.orig 2017-04-19 19:06:34 UTC
++++ content/renderer/renderer_blink_platform_impl.cc
+@@ -112,7 +112,7 @@
+
+ #if defined(OS_POSIX)
+ #include "base/file_descriptor_posix.h"
+-#if !defined(OS_MACOSX) && !defined(OS_ANDROID)
++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ #include <map>
+ #include <string>
+
+@@ -206,7 +206,7 @@ class RendererBlinkPlatformImpl::FileUti
+ scoped_refptr<ThreadSafeSender> thread_safe_sender_;
+ };
+
+-#if !defined(OS_ANDROID) && !defined(OS_WIN)
++#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_BSD)
+ class RendererBlinkPlatformImpl::SandboxSupport
+ : public blink::WebSandboxSupport {
+ public:
+@@ -252,7 +252,7 @@ RendererBlinkPlatformImpl::RendererBlink
+ renderer_scheduler_(renderer_scheduler),
+ blink_interface_provider_(
+ new BlinkInterfaceProviderImpl(remote_interfaces)) {
+-#if !defined(OS_ANDROID) && !defined(OS_WIN)
++#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_BSD)
+ if (g_sandbox_enabled && sandboxEnabled()) {
+ sandbox_support_.reset(new RendererBlinkPlatformImpl::SandboxSupport);
+ } else {
+@@ -288,7 +288,7 @@ RendererBlinkPlatformImpl::~RendererBlin
+ }
+
+ void RendererBlinkPlatformImpl::Shutdown() {
+-#if !defined(OS_ANDROID) && !defined(OS_WIN)
++#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_BSD)
+ // SandboxSupport contains a map of WebFontFamily objects, which hold
+ // WebCStrings, which become invalidated when blink is shut down. Hence, we
+ // need to clear that map now, just before blink::shutdown() is called.
+@@ -336,7 +336,7 @@ blink::WebFileUtilities* RendererBlinkPl
+ }
+
+ blink::WebSandboxSupport* RendererBlinkPlatformImpl::sandboxSupport() {
+-#if defined(OS_ANDROID) || defined(OS_WIN)
++#if defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_BSD)
+ // These platforms do not require sandbox support.
+ return NULL;
+ #else
+@@ -543,7 +543,7 @@ bool RendererBlinkPlatformImpl::SandboxS
+ return FontLoader::CGFontRefFromBuffer(font_data, font_data_size, out);
+ }
+
+-#elif defined(OS_POSIX) && !defined(OS_ANDROID)
++#elif defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+
+ void RendererBlinkPlatformImpl::SandboxSupport::getFallbackFontForCharacter(
+ blink::WebUChar32 character,
diff --git a/www/iridium/files/patch-content_renderer_renderer__blink__platform__impl.h b/www/iridium/files/patch-content_renderer_renderer__blink__platform__impl.h
new file mode 100644
index 000000000000..1b3430ef03c6
--- /dev/null
+++ b/www/iridium/files/patch-content_renderer_renderer__blink__platform__impl.h
@@ -0,0 +1,11 @@
+--- content/renderer/renderer_blink_platform_impl.h.orig 2017-04-19 19:06:34 UTC
++++ content/renderer/renderer_blink_platform_impl.h
+@@ -253,7 +253,7 @@ class CONTENT_EXPORT RendererBlinkPlatfo
+ class FileUtilities;
+ std::unique_ptr<FileUtilities> file_utilities_;
+
+-#if !defined(OS_ANDROID) && !defined(OS_WIN)
++#if !defined(OS_ANDROID) && !defined(OS_WIN) && !defined(OS_BSD)
+ class SandboxSupport;
+ std::unique_ptr<SandboxSupport> sandbox_support_;
+ #endif
diff --git a/www/iridium/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc b/www/iridium/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
new file mode 100644
index 000000000000..7090b6bafc6a
--- /dev/null
+++ b/www/iridium/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc
@@ -0,0 +1,19 @@
+--- content/renderer/renderer_main_platform_delegate_linux.cc.orig 2017-04-19 19:06:34 UTC
++++ content/renderer/renderer_main_platform_delegate_linux.cc
+@@ -29,6 +29,7 @@ void RendererMainPlatformDelegate::Platf
+ }
+
+ bool RendererMainPlatformDelegate::EnableSandbox() {
++#if !defined(OS_BSD)
+ // The setuid sandbox is started in the zygote process: zygote_main_linux.cc
+ // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox.md
+ //
+@@ -59,7 +60,7 @@ bool RendererMainPlatformDelegate::Enabl
+ CHECK_EQ(errno, EPERM);
+ }
+ #endif // __x86_64__
+-
++#endif // ! OS_BSD
+ return true;
+ }
+
diff --git a/www/iridium/files/patch-content_renderer_webscrollbarbehavior__impl__aura.cc b/www/iridium/files/patch-content_renderer_webscrollbarbehavior__impl__aura.cc
new file mode 100644
index 000000000000..0e068336ee75
--- /dev/null
+++ b/www/iridium/files/patch-content_renderer_webscrollbarbehavior__impl__aura.cc
@@ -0,0 +1,20 @@
+--- content/renderer/webscrollbarbehavior_impl_aura.cc.orig 2017-04-19 19:06:34 UTC
++++ content/renderer/webscrollbarbehavior_impl_aura.cc
+@@ -14,7 +14,7 @@ bool WebScrollbarBehaviorImpl::shouldCen
+ blink::WebPointerProperties::Button mouseButton,
+ bool shiftKeyPressed,
+ bool altKeyPressed) {
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (mouseButton == blink::WebPointerProperties::Button::Middle)
+ return true;
+ #endif
+@@ -29,7 +29,7 @@ bool WebScrollbarBehaviorImpl::shouldSna
+ // Disable snapback on desktop Linux to better integrate with the desktop
+ // behavior. Typically, Linux apps do not implement scrollbar snapback (this is
+ // true for at least GTK and QT apps).
+-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS))
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ return false;
+ #endif
+
diff --git a/www/iridium/files/patch-content_shell_BUILD.gn b/www/iridium/files/patch-content_shell_BUILD.gn
new file mode 100644
index 000000000000..0167eba7577f
--- /dev/null
+++ b/www/iridium/files/patch-content_shell_BUILD.gn
@@ -0,0 +1,38 @@
+--- content/shell/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ content/shell/BUILD.gn
+@@ -295,7 +295,7 @@ static_library("content_shell_lib") {
+ ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ deps += [
+ "//build/linux:fontconfig",
+ "//ui/gfx:test_support",
+@@ -319,7 +319,7 @@ static_library("content_shell_lib") {
+ ]
+ }
+
+- if (is_posix && !is_mac) {
++ if (is_posix && !is_mac && !is_bsd) {
+ deps += [
+ "//components/crash/content/app",
+ "//components/crash/content/browser",
+@@ -368,7 +368,7 @@ static_library("content_shell_lib") {
+ ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ deps += [ "//third_party/freetype-android:freetype" ]
+ }
+
+@@ -539,7 +539,7 @@ if (is_android) {
+ }
+ }
+
+- if (is_linux && !is_component_build) {
++ if ((is_linux || is_bsd) && !is_component_build) {
+ # Set rpath to find our own libfreetype even in a non-component build.
+ configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
+ }
diff --git a/www/iridium/files/patch-content_shell_browser_shell__browser__context.cc b/www/iridium/files/patch-content_shell_browser_shell__browser__context.cc
new file mode 100644
index 000000000000..0d8886b4b2a4
--- /dev/null
+++ b/www/iridium/files/patch-content_shell_browser_shell__browser__context.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_browser_context.cc.orig 2017-04-19 19:06:34 UTC
++++ content/shell/browser/shell_browser_context.cc
+@@ -25,7 +25,7 @@
+
+ #if defined(OS_WIN)
+ #include "base/base_paths_win.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "base/nix/xdg_util.h"
+ #elif defined(OS_MACOSX)
+ #include "base/base_paths_mac.h"
+@@ -97,7 +97,7 @@ void ShellBrowserContext::InitWhileIOAll
+ #if defined(OS_WIN)
+ CHECK(PathService::Get(base::DIR_LOCAL_APP_DATA, &path_));
+ path_ = path_.Append(std::wstring(L"content_shell"));
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<base::Environment> env(base::Environment::Create());
+ base::FilePath config_dir(
+ base::nix::GetXDGDirectory(env.get(),
diff --git a/www/iridium/files/patch-content_shell_browser_shell__browser__main__parts.cc b/www/iridium/files/patch-content_shell_browser_shell__browser__main__parts.cc
new file mode 100644
index 000000000000..aa34865eaaae
--- /dev/null
+++ b/www/iridium/files/patch-content_shell_browser_shell__browser__main__parts.cc
@@ -0,0 +1,20 @@
+--- content/shell/browser/shell_browser_main_parts.cc.orig 2017-04-24 14:40:29 UTC
++++ content/shell/browser/shell_browser_main_parts.cc
+@@ -46,7 +46,7 @@
+ #if defined(USE_AURA) && defined(USE_X11)
+ #include "ui/events/devices/x11/touch_factory_x11.h" // nogncheck
+ #endif
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX))
+ #include "ui/base/ime/input_method_initializer.h"
+ #endif
+ #if defined(OS_CHROMEOS)
+@@ -142,7 +142,7 @@ void ShellBrowserMainParts::PostMainMess
+ }
+
+ void ShellBrowserMainParts::PreEarlyInitialization() {
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX))
+ ui::InitializeInputMethodForTesting();
+ #endif
+ #if defined(OS_ANDROID)
diff --git a/www/iridium/files/patch-content_test_BUILD.gn b/www/iridium/files/patch-content_test_BUILD.gn
new file mode 100644
index 000000000000..968e41e4bfa4
--- /dev/null
+++ b/www/iridium/files/patch-content_test_BUILD.gn
@@ -0,0 +1,38 @@
+--- content/test/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ content/test/BUILD.gn
+@@ -785,7 +785,7 @@ test("content_browsertests") {
+ }
+ }
+
+- if (is_android || is_linux || is_mac || is_win) {
++ if (is_android || is_linux || is_bsd || is_mac || is_win) {
+ data += [
+ "$root_out_dir/content_shell.pak",
+ "data/",
+@@ -1425,7 +1425,7 @@ test("content_unittests") {
+ sources += [ "../browser/memory/memory_monitor_linux_unittest.cc" ]
+ }
+
+- if (is_android || is_linux || is_mac || is_win) {
++ if (is_android || is_linux || is_bsd || is_mac || is_win) {
+ data = [
+ "$root_out_dir/content_shell.pak",
+ "data/",
+@@ -1632,7 +1632,7 @@ test("content_unittests") {
+ "//ui/shell_dialogs:shell_dialogs",
+ ]
+
+- if (is_linux || is_mac || is_win) {
++ if (is_linux || is_bsd || is_mac || is_win) {
+ sources +=
+ [ "../browser/media/capture/desktop_capture_device_unittest.cc" ]
+ deps += [ "//third_party/webrtc/modules/desktop_capture" ]
+@@ -1670,7 +1670,7 @@ test("content_unittests") {
+ }
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ if (use_dbus) {
+ deps += [ "//dbus:test_support" ]
+ }
diff --git a/www/iridium/files/patch-crypto_nss__util.cc b/www/iridium/files/patch-crypto_nss__util.cc
new file mode 100644
index 000000000000..249910cbcc3b
--- /dev/null
+++ b/www/iridium/files/patch-crypto_nss__util.cc
@@ -0,0 +1,24 @@
+--- crypto/nss_util.cc.orig 2017-04-19 19:06:34 UTC
++++ crypto/nss_util.cc
+@@ -20,7 +20,7 @@
+ #include "base/threading/thread_task_runner_handle.h"
+ #include "crypto/nss_util_internal.h"
+
+-#if defined(OS_OPENBSD)
++#if defined(OS_BSD)
+ #include <sys/mount.h>
+ #include <sys/param.h>
+ #endif
+@@ -150,10 +150,10 @@ void UseLocalCacheOfNSSDatabaseIfNFS(con
+ base::FileSystemType fs_type = base::FILE_SYSTEM_UNKNOWN;
+ if (base::GetFileSystemType(database_dir, &fs_type))
+ db_on_nfs = (fs_type == base::FILE_SYSTEM_NFS);
+-#elif defined(OS_OPENBSD)
++#elif defined(OS_BSD)
+ struct statfs buf;
+ if (statfs(database_dir.value().c_str(), &buf) == 0)
+- db_on_nfs = (strcmp(buf.f_fstypename, MOUNT_NFS) == 0);
++ db_on_nfs = (strcmp(buf.f_fstypename, "nfs") == 0);
+ #else
+ NOTIMPLEMENTED();
+ #endif
diff --git a/www/iridium/files/patch-device_BUILD.gn b/www/iridium/files/patch-device_BUILD.gn
new file mode 100644
index 000000000000..1feb2146b8ec
--- /dev/null
+++ b/www/iridium/files/patch-device_BUILD.gn
@@ -0,0 +1,11 @@
+--- device/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ device/BUILD.gn
+@@ -200,7 +200,7 @@ test("device_unittests") {
+ ]
+ }
+
+- if ((is_chromeos || is_linux) && use_dbus) {
++ if ((is_chromeos || is_linux || is_bsd) && use_dbus) {
+ configs += [ "//build/config/linux/dbus" ]
+
+ sources += [
diff --git a/www/iridium/files/patch-device_battery_BUILD.gn b/www/iridium/files/patch-device_battery_BUILD.gn
new file mode 100644
index 000000000000..8c51ce4f7726
--- /dev/null
+++ b/www/iridium/files/patch-device_battery_BUILD.gn
@@ -0,0 +1,11 @@
+--- device/battery/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ device/battery/BUILD.gn
+@@ -47,7 +47,7 @@ if (!is_android) {
+ ]
+ }
+
+- if (is_linux && !is_chromeos) {
++ if ((is_linux || is_bsd) && !is_chromeos) {
+ if (use_dbus) {
+ configs += [ "//build/config/linux/dbus" ]
+ deps += [ "//dbus" ]
diff --git a/www/iridium/files/patch-device_bluetooth_BUILD.gn b/www/iridium/files/patch-device_bluetooth_BUILD.gn
new file mode 100644
index 000000000000..a27c4596720c
--- /dev/null
+++ b/www/iridium/files/patch-device_bluetooth_BUILD.gn
@@ -0,0 +1,11 @@
+--- device/bluetooth/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ device/bluetooth/BUILD.gn
+@@ -200,7 +200,7 @@ component("bluetooth") {
+ ]
+ }
+
+- if (is_chromeos || is_linux) {
++ if (is_chromeos || (is_linux && !is_bsd)) {
+ if (use_dbus) {
+ sources += [
+ "bluez/bluetooth_adapter_bluez.cc",
diff --git a/www/iridium/files/patch-device_gamepad_gamepad__provider.cc b/www/iridium/files/patch-device_gamepad_gamepad__provider.cc
new file mode 100644
index 000000000000..26527f14a500
--- /dev/null
+++ b/www/iridium/files/patch-device_gamepad_gamepad__provider.cc
@@ -0,0 +1,11 @@
+--- device/gamepad/gamepad_provider.cc.orig 2017-04-19 19:06:34 UTC
++++ device/gamepad/gamepad_provider.cc
+@@ -153,7 +153,7 @@ void GamepadProvider::Initialize(std::un
+ monitor->AddDevicesChangedObserver(this);
+
+ polling_thread_.reset(new base::Thread("Gamepad polling thread"));
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, the data fetcher needs to watch file descriptors, so the message
+ // loop needs to be a libevent loop.
+ const base::MessageLoop::Type kMessageLoopType = base::MessageLoop::TYPE_IO;
diff --git a/www/iridium/files/patch-device_geolocation_BUILD.gn b/www/iridium/files/patch-device_geolocation_BUILD.gn
new file mode 100644
index 000000000000..1f4d0ae14b36
--- /dev/null
+++ b/www/iridium/files/patch-device_geolocation_BUILD.gn
@@ -0,0 +1,11 @@
+--- device/geolocation/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ device/geolocation/BUILD.gn
+@@ -89,7 +89,7 @@ component("geolocation") {
+ if (is_android) {
+ sources -= [ "wifi_data_provider_common.cc" ]
+ }
+- if (is_chromeos || (is_linux && !use_dbus)) {
++ if (is_chromeos || (is_linux && !use_dbus) || is_bsd) {
+ sources -= [ "wifi_data_provider_linux.cc" ]
+ }
+ if (is_linux && use_dbus) {
diff --git a/www/iridium/files/patch-device_geolocation_location__arbitrator.cc b/www/iridium/files/patch-device_geolocation_location__arbitrator.cc
new file mode 100644
index 000000000000..b316169411bf
--- /dev/null
+++ b/www/iridium/files/patch-device_geolocation_location__arbitrator.cc
@@ -0,0 +1,11 @@
+--- device/geolocation/location_arbitrator.cc.orig 2017-04-19 19:06:34 UTC
++++ device/geolocation/location_arbitrator.cc
+@@ -182,7 +182,7 @@ LocationArbitrator::NewNetworkLocationPr
+
+ std::unique_ptr<LocationProvider>
+ LocationArbitrator::NewSystemLocationProvider() {
+-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
+ return nullptr;
+ #else
+ return device::NewSystemLocationProvider();
diff --git a/www/iridium/files/patch-device_hid_BUILD.gn b/www/iridium/files/patch-device_hid_BUILD.gn
new file mode 100644
index 000000000000..3839cd3a872f
--- /dev/null
+++ b/www/iridium/files/patch-device_hid_BUILD.gn
@@ -0,0 +1,16 @@
+--- device/hid/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ device/hid/BUILD.gn
+@@ -56,6 +56,13 @@ source_set("hid") {
+ deps += [ "//device/udev_linux" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "hid_connection_linux.cc",
++ "hid_connection_linux.h",
++ ]
++ }
++
+ if (is_chromeos) {
+ deps += [ "//chromeos" ]
+ }
diff --git a/www/iridium/files/patch-device_media__transfer__protocol_media__transfer__protocol__daemon__client.h b/www/iridium/files/patch-device_media__transfer__protocol_media__transfer__protocol__daemon__client.h
new file mode 100644
index 000000000000..f1731ef81610
--- /dev/null
+++ b/www/iridium/files/patch-device_media__transfer__protocol_media__transfer__protocol__daemon__client.h
@@ -0,0 +1,11 @@
+--- device/media_transfer_protocol/media_transfer_protocol_daemon_client.h.orig 2017-04-19 19:06:34 UTC
++++ device/media_transfer_protocol/media_transfer_protocol_daemon_client.h
+@@ -19,7 +19,7 @@
+ #include "base/macros.h"
+ #include "build/build_config.h"
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ #error "Only used on Linux and ChromeOS"
+ #endif
+
diff --git a/www/iridium/files/patch-device_media__transfer__protocol_media__transfer__protocol__manager.h b/www/iridium/files/patch-device_media__transfer__protocol_media__transfer__protocol__manager.h
new file mode 100644
index 000000000000..c12a44a23603
--- /dev/null
+++ b/www/iridium/files/patch-device_media__transfer__protocol_media__transfer__protocol__manager.h
@@ -0,0 +1,11 @@
+--- device/media_transfer_protocol/media_transfer_protocol_manager.h.orig 2017-04-19 19:06:34 UTC
++++ device/media_transfer_protocol/media_transfer_protocol_manager.h
+@@ -15,7 +15,7 @@
+ #include "base/memory/ref_counted.h"
+ #include "build/build_config.h"
+
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_FREEBSD)
+ #error "Only used on Linux and ChromeOS"
+ #endif
+
diff --git a/www/iridium/files/patch-device_sensors_data__fetcher__shared__memory.h b/www/iridium/files/patch-device_sensors_data__fetcher__shared__memory.h
new file mode 100644
index 000000000000..3e393135e0e7
--- /dev/null
+++ b/www/iridium/files/patch-device_sensors_data__fetcher__shared__memory.h
@@ -0,0 +1,11 @@
+--- device/sensors/data_fetcher_shared_memory.h.orig 2017-04-19 19:06:34 UTC
++++ device/sensors/data_fetcher_shared_memory.h
+@@ -44,7 +44,7 @@ class DEVICE_SENSOR_EXPORT DataFetcherSh
+ bool Start(ConsumerType consumer_type, void* buffer) override;
+ bool Stop(ConsumerType consumer_type) override;
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD)
+ #if !defined(OS_CHROMEOS)
+ DeviceMotionHardwareBuffer* motion_buffer_ = nullptr;
+ DeviceOrientationHardwareBuffer* orientation_buffer_ = nullptr;
diff --git a/www/iridium/files/patch-device_serial_BUILD.gn b/www/iridium/files/patch-device_serial_BUILD.gn
new file mode 100644
index 000000000000..5e66e46f4d31
--- /dev/null
+++ b/www/iridium/files/patch-device_serial_BUILD.gn
@@ -0,0 +1,24 @@
+--- device/serial/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ device/serial/BUILD.gn
+@@ -6,7 +6,7 @@ import("//build/config/features.gni")
+ import("//mojo/public/tools/bindings/mojom.gni")
+
+ # Library works only on desktop platforms.
+-assert(is_win || is_linux || is_mac)
++assert(is_win || is_linux || is_bsd || is_mac)
+
+ config("platform_support") {
+ visibility = [ ":serial" ]
+@@ -55,6 +55,12 @@ static_library("serial") {
+ if (use_udev) {
+ deps += [ "//device/udev_linux" ]
+ }
++ if (is_bsd) {
++ sources -= [
++ "serial_device_enumerator_linux.cc",
++ "serial_device_enumerator_linux.h"
++ ]
++ }
+ if (is_chromeos) {
+ deps += [
+ "//chromeos",
diff --git a/www/iridium/files/patch-device_serial_serial__io__handler__posix.cc b/www/iridium/files/patch-device_serial_serial__io__handler__posix.cc
new file mode 100644
index 000000000000..b515cc9b1848
--- /dev/null
+++ b/www/iridium/files/patch-device_serial_serial__io__handler__posix.cc
@@ -0,0 +1,11 @@
+--- device/serial/serial_io_handler_posix.cc.orig 2017-04-19 19:06:34 UTC
++++ device/serial/serial_io_handler_posix.cc
+@@ -61,7 +61,7 @@ bool BitrateToSpeedConstant(int bitrate,
+ BITRATE_TO_SPEED_CASE(9600)
+ BITRATE_TO_SPEED_CASE(19200)
+ BITRATE_TO_SPEED_CASE(38400)
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ BITRATE_TO_SPEED_CASE(57600)
+ BITRATE_TO_SPEED_CASE(115200)
+ BITRATE_TO_SPEED_CASE(230400)
diff --git a/www/iridium/files/patch-device_usb_usb__context.cc b/www/iridium/files/patch-device_usb_usb__context.cc
new file mode 100644
index 000000000000..1379b24fcf9c
--- /dev/null
+++ b/www/iridium/files/patch-device_usb_usb__context.cc
@@ -0,0 +1,26 @@
+--- device/usb/usb_context.cc.orig 2017-04-19 19:06:34 UTC
++++ device/usb/usb_context.cc
+@@ -9,8 +9,13 @@
+ #include "base/macros.h"
+ #include "base/threading/simple_thread.h"
+ #include "device/usb/usb_error.h"
++#if defined(OS_FREEBSD)
++#include "libusb.h"
++#define LIBUSB_CALL
++#else
+ #include "third_party/libusb/src/libusb/interrupt.h"
+ #include "third_party/libusb/src/libusb/libusb.h"
++#endif
+
+ namespace device {
+
+@@ -58,7 +63,9 @@ void UsbContext::UsbEventHandler::Run()
+
+ void UsbContext::UsbEventHandler::Stop() {
+ base::subtle::Release_Store(&running_, 0);
++#if !defined(OS_FREEBSD) // XXX(rene) not available in base version
+ libusb_interrupt_handle_event(context_);
++#endif
+ }
+
+ UsbContext::UsbContext(PlatformUsbContext context) : context_(context) {
diff --git a/www/iridium/files/patch-device_usb_usb__context__unittest.cc b/www/iridium/files/patch-device_usb_usb__context__unittest.cc
new file mode 100644
index 000000000000..f54b7d76f1ab
--- /dev/null
+++ b/www/iridium/files/patch-device_usb_usb__context__unittest.cc
@@ -0,0 +1,14 @@
+--- device/usb/usb_context_unittest.cc.orig 2017-04-19 19:06:34 UTC
++++ device/usb/usb_context_unittest.cc
+@@ -7,7 +7,11 @@
+ #include "build/build_config.h"
+ #include "device/usb/usb_context.h"
+ #include "testing/gtest/include/gtest/gtest.h"
++#if defined(OS_FREEBSD)
++#include "libusb.h"
++#else
+ #include "third_party/libusb/src/libusb/libusb.h"
++#endif
+
+ namespace device {
+
diff --git a/www/iridium/files/patch-device_usb_usb__device__handle__impl.cc b/www/iridium/files/patch-device_usb_usb__device__handle__impl.cc
new file mode 100644
index 000000000000..3ba8fcde82e4
--- /dev/null
+++ b/www/iridium/files/patch-device_usb_usb__device__handle__impl.cc
@@ -0,0 +1,15 @@
+--- device/usb/usb_device_handle_impl.cc.orig 2017-04-19 19:06:34 UTC
++++ device/usb/usb_device_handle_impl.cc
+@@ -25,7 +25,11 @@
+ #include "device/usb/usb_error.h"
+ #include "device/usb/usb_service.h"
+ #include "net/base/io_buffer.h"
+-#include "third_party/libusb/src/libusb/libusb.h"
++#if defined(OS_FREEBSD)
++# include "libusb.h"
++#else
++# include "third_party/libusb/src/libusb/libusb.h"
++#endif
+
+ namespace device {
+
diff --git a/www/iridium/files/patch-device_usb_usb__device__handle__impl.h b/www/iridium/files/patch-device_usb_usb__device__handle__impl.h
new file mode 100644
index 000000000000..4cf2a1875c27
--- /dev/null
+++ b/www/iridium/files/patch-device_usb_usb__device__handle__impl.h
@@ -0,0 +1,15 @@
+--- device/usb/usb_device_handle_impl.h.orig 2017-04-19 19:06:34 UTC
++++ device/usb/usb_device_handle_impl.h
+@@ -18,7 +18,12 @@
+ #include "base/memory/ref_counted.h"
+ #include "base/threading/thread_checker.h"
+ #include "device/usb/usb_device_handle.h"
++#if defined(OS_FREEBSD)
++#include "libusb.h"
++#define LIBUSB_CALL
++#else
+ #include "third_party/libusb/src/libusb/libusb.h"
++#endif
+
+ namespace base {
+ class SequencedTaskRunner;
diff --git a/www/iridium/files/patch-device_usb_usb__device__impl.cc b/www/iridium/files/patch-device_usb_usb__device__impl.cc
new file mode 100644
index 000000000000..e29998454a2d
--- /dev/null
+++ b/www/iridium/files/patch-device_usb_usb__device__impl.cc
@@ -0,0 +1,14 @@
+--- device/usb/usb_device_impl.cc.orig 2017-04-19 19:06:34 UTC
++++ device/usb/usb_device_impl.cc
+@@ -22,7 +22,11 @@
+ #include "device/usb/usb_descriptors.h"
+ #include "device/usb/usb_device_handle_impl.h"
+ #include "device/usb/usb_error.h"
++#if defined(OS_FREEBSD)
++#include "libusb.h"
++#else
+ #include "third_party/libusb/src/libusb/libusb.h"
++#endif
+
+ namespace device {
+
diff --git a/www/iridium/files/patch-device_usb_usb__error.cc b/www/iridium/files/patch-device_usb_usb__error.cc
new file mode 100644
index 000000000000..b650b7733252
--- /dev/null
+++ b/www/iridium/files/patch-device_usb_usb__error.cc
@@ -0,0 +1,14 @@
+--- device/usb/usb_error.cc.orig 2017-04-19 19:06:34 UTC
++++ device/usb/usb_error.cc
+@@ -4,7 +4,11 @@
+
+ #include "device/usb/usb_error.h"
+
++#if defined(__FreeBSD__)
++#include "libusb.h"
++#else
+ #include "third_party/libusb/src/libusb/libusb.h"
++#endif
+
+ namespace device {
+
diff --git a/www/iridium/files/patch-device_usb_usb__service__impl.cc b/www/iridium/files/patch-device_usb_usb__service__impl.cc
new file mode 100644
index 000000000000..861a8249b284
--- /dev/null
+++ b/www/iridium/files/patch-device_usb_usb__service__impl.cc
@@ -0,0 +1,58 @@
+--- device/usb/usb_service_impl.cc.orig 2017-04-19 19:06:34 UTC
++++ device/usb/usb_service_impl.cc
+@@ -25,7 +25,11 @@
+ #include "device/usb/usb_error.h"
+ #include "device/usb/webusb_descriptors.h"
+ #include "net/base/io_buffer.h"
+-#include "third_party/libusb/src/libusb/libusb.h"
++#if defined(OS_FREEBSD)
++# include <libusb.h>
++#else
++# include "third_party/libusb/src/libusb/libusb.h"
++#endif
+
+ #if defined(OS_WIN)
+ #define INITGUID
+@@ -231,8 +235,10 @@ UsbServiceImpl::UsbServiceImpl(
+ }
+
+ UsbServiceImpl::~UsbServiceImpl() {
++#if !defined(OS_FREEBSD)
+ if (hotplug_enabled_)
+ libusb_hotplug_deregister_callback(context_->context(), hotplug_handle_);
++#endif // !defined(OS_FREEBSD)
+ for (auto* platform_device : ignored_devices_)
+ libusb_unref_device(platform_device);
+ }
+@@ -289,6 +295,7 @@ void UsbServiceImpl::OnUsbContext(scoped
+
+ context_ = std::move(context);
+
++#if !defined(OS_FREEBSD)
+ int rv = libusb_hotplug_register_callback(
+ context_->context(),
+ static_cast<libusb_hotplug_event>(LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED |
+@@ -301,6 +308,7 @@ void UsbServiceImpl::OnUsbContext(scoped
+
+ // This will call any enumeration callbacks queued while initializing.
+ RefreshDevices();
++#endif // !defined(OS_FREEBSD)
+
+ #if defined(OS_WIN)
+ DeviceMonitorWin* device_monitor = DeviceMonitorWin::GetForAllInterfaces();
+@@ -500,6 +508,7 @@ void UsbServiceImpl::RemoveDevice(scoped
+ device->OnDisconnect();
+ }
+
++#if !defined(OS_FREEBSD)
+ // static
+ int LIBUSB_CALL UsbServiceImpl::HotplugCallback(libusb_context* context,
+ PlatformUsbDevice device,
+@@ -530,6 +539,7 @@ int LIBUSB_CALL UsbServiceImpl::HotplugC
+
+ return 0;
+ }
++#endif // !defined(OS_FREEBSD)
+
+ void UsbServiceImpl::OnPlatformDeviceAdded(PlatformUsbDevice platform_device) {
+ DCHECK(CalledOnValidThread());
diff --git a/www/iridium/files/patch-device_usb_usb__service__impl.h b/www/iridium/files/patch-device_usb_usb__service__impl.h
new file mode 100644
index 000000000000..115e64abf2d6
--- /dev/null
+++ b/www/iridium/files/patch-device_usb_usb__service__impl.h
@@ -0,0 +1,40 @@
+--- device/usb/usb_service_impl.h.orig 2017-04-19 19:06:34 UTC
++++ device/usb/usb_service_impl.h
+@@ -15,7 +15,13 @@
+ #include "build/build_config.h"
+ #include "device/usb/usb_context.h"
+ #include "device/usb/usb_device_impl.h"
++#if defined(OS_FREEBSD)
++#include "libusb.h"
++#define LIBUSB_CALL
++#else
+ #include "third_party/libusb/src/libusb/libusb.h"
++#endif
++
+
+ #if defined(OS_WIN)
+ #include "base/scoped_observer.h"
+@@ -73,11 +79,13 @@ class UsbServiceImpl :
+ scoped_refptr<UsbDeviceImpl> device);
+ void RemoveDevice(scoped_refptr<UsbDeviceImpl> device);
+
++#if !defined(OS_FREEBSD)
+ // Handle hotplug events from libusb.
+ static int LIBUSB_CALL HotplugCallback(libusb_context* context,
+ PlatformUsbDevice device,
+ libusb_hotplug_event event,
+ void* user_data);
++#endif
+ // These functions release a reference to the provided platform device.
+ void OnPlatformDeviceAdded(PlatformUsbDevice platform_device);
+ void OnPlatformDeviceRemoved(PlatformUsbDevice platform_device);
+@@ -94,7 +102,9 @@ class UsbServiceImpl :
+ // connected instead of only when a full enumeration is requested.
+ // TODO(reillyg): Support this on all platforms. crbug.com/411715
+ bool hotplug_enabled_ = false;
++#if !defined(OS_FREEBSD)
+ libusb_hotplug_callback_handle hotplug_handle_;
++#endif
+
+ // Enumeration callbacks are queued until an enumeration completes.
+ bool enumeration_ready_ = false;
diff --git a/www/iridium/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc b/www/iridium/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
new file mode 100644
index 000000000000..1b226d273ab4
--- /dev/null
+++ b/www/iridium/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc
@@ -0,0 +1,14 @@
+--- extensions/browser/api/declarative_webrequest/webrequest_action.cc.orig 2017-04-19 19:06:34 UTC
++++ extensions/browser/api/declarative_webrequest/webrequest_action.cc
+@@ -29,7 +29,11 @@
+ #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
+ #include "net/http/http_util.h"
+ #include "net/url_request/url_request.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using content::ResourceRequestInfo;
+
diff --git a/www/iridium/files/patch-extensions_browser_api_networking__private_networking__private__event__router__factory.cc b/www/iridium/files/patch-extensions_browser_api_networking__private_networking__private__event__router__factory.cc
new file mode 100644
index 000000000000..d94b27c67d46
--- /dev/null
+++ b/www/iridium/files/patch-extensions_browser_api_networking__private_networking__private__event__router__factory.cc
@@ -0,0 +1,17 @@
+--- extensions/browser/api/networking_private/networking_private_event_router_factory.cc.orig 2017-04-19 19:06:34 UTC
++++ extensions/browser/api/networking_private/networking_private_event_router_factory.cc
+@@ -13,6 +13,7 @@
+
+ namespace extensions {
+
++#if !defined(OS_BSD)
+ // static
+ NetworkingPrivateEventRouter*
+ NetworkingPrivateEventRouterFactory::GetForProfile(
+@@ -57,5 +58,6 @@ bool NetworkingPrivateEventRouterFactory
+ bool NetworkingPrivateEventRouterFactory::ServiceIsNULLWhileTesting() const {
+ return true;
+ }
++#endif
+
+ } // namespace extensions
diff --git a/www/iridium/files/patch-extensions_browser_api_serial_serial__api.cc b/www/iridium/files/patch-extensions_browser_api_serial_serial__api.cc
new file mode 100644
index 000000000000..5b69f283de98
--- /dev/null
+++ b/www/iridium/files/patch-extensions_browser_api_serial_serial__api.cc
@@ -0,0 +1,16 @@
+--- extensions/browser/api/serial/serial_api.cc.orig 2017-04-19 19:06:34 UTC
++++ extensions/browser/api/serial/serial_api.cc
+@@ -86,11 +86,13 @@ bool SerialGetDevicesFunction::Prepare()
+ void SerialGetDevicesFunction::Work() {
+ DCHECK_CURRENTLY_ON(BrowserThread::FILE);
+
++#if !defined(OS_BSD)
+ std::unique_ptr<device::SerialDeviceEnumerator> enumerator =
+ device::SerialDeviceEnumerator::Create();
+ std::vector<device::serial::DeviceInfoPtr> devices = enumerator->GetDevices();
+ results_ = serial::GetDevices::Results::Create(
+ mojo::ConvertTo<std::vector<serial::DeviceInfo>>(devices));
++#endif
+ }
+
+ SerialConnectFunction::SerialConnectFunction() {
diff --git a/www/iridium/files/patch-extensions_browser_api_web__request_form__data__parser.cc b/www/iridium/files/patch-extensions_browser_api_web__request_form__data__parser.cc
new file mode 100644
index 000000000000..64959cb94e89
--- /dev/null
+++ b/www/iridium/files/patch-extensions_browser_api_web__request_form__data__parser.cc
@@ -0,0 +1,14 @@
+--- extensions/browser/api/web_request/form_data_parser.cc.orig 2017-04-19 19:06:34 UTC
++++ extensions/browser/api/web_request/form_data_parser.cc
+@@ -15,7 +15,11 @@
+ #include "base/values.h"
+ #include "net/base/escape.h"
+ #include "net/url_request/url_request.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using base::DictionaryValue;
+ using base::ListValue;
diff --git a/www/iridium/files/patch-extensions_common_image__util.cc b/www/iridium/files/patch-extensions_common_image__util.cc
new file mode 100644
index 000000000000..823b32ff5d40
--- /dev/null
+++ b/www/iridium/files/patch-extensions_common_image__util.cc
@@ -0,0 +1,14 @@
+--- extensions/common/image_util.cc.orig 2017-04-19 19:06:34 UTC
++++ extensions/common/image_util.cc
+@@ -11,7 +11,11 @@
+ #include "base/strings/string_number_conversions.h"
+ #include "base/strings/string_util.h"
+ #include "base/strings/stringprintf.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "third_party/skia/include/core/SkColor.h"
+ #include "third_party/skia/include/utils/SkParse.h"
+ #include "ui/gfx/color_utils.h"
diff --git a/www/iridium/files/patch-extensions_common_stack__frame.cc b/www/iridium/files/patch-extensions_common_stack__frame.cc
new file mode 100644
index 000000000000..918a20a85797
--- /dev/null
+++ b/www/iridium/files/patch-extensions_common_stack__frame.cc
@@ -0,0 +1,14 @@
+--- extensions/common/stack_frame.cc.orig 2017-04-19 19:06:34 UTC
++++ extensions/common/stack_frame.cc
+@@ -7,7 +7,11 @@
+ #include <string>
+
+ #include "base/strings/utf_string_conversions.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace extensions {
+
diff --git a/www/iridium/files/patch-gpu_BUILD.gn b/www/iridium/files/patch-gpu_BUILD.gn
new file mode 100644
index 000000000000..b1e3465b5410
--- /dev/null
+++ b/www/iridium/files/patch-gpu_BUILD.gn
@@ -0,0 +1,11 @@
+--- gpu/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ gpu/BUILD.gn
+@@ -96,7 +96,7 @@ test("command_buffer_gles2_tests") {
+ libs += [ "android" ]
+ deps += [ "//ui/android:ui_java" ]
+ }
+- if (is_linux && !is_component_build) {
++ if ((is_linux || is_bsd) && !is_component_build) {
+ configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
+ }
+ }
diff --git a/www/iridium/files/patch-gpu_command__buffer_service_program__manager.cc b/www/iridium/files/patch-gpu_command__buffer_service_program__manager.cc
new file mode 100644
index 000000000000..bb49bb75a31e
--- /dev/null
+++ b/www/iridium/files/patch-gpu_command__buffer_service_program__manager.cc
@@ -0,0 +1,14 @@
+--- gpu/command_buffer/service/program_manager.cc.orig 2017-04-19 19:06:34 UTC
++++ gpu/command_buffer/service/program_manager.cc
+@@ -31,7 +31,11 @@
+ #include "gpu/command_buffer/service/program_cache.h"
+ #include "gpu/command_buffer/service/progress_reporter.h"
+ #include "gpu/command_buffer/service/shader_manager.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+ #include "ui/gl/gl_version_info.h"
+
+ using base::TimeDelta;
diff --git a/www/iridium/files/patch-gpu_config_BUILD.gn b/www/iridium/files/patch-gpu_config_BUILD.gn
new file mode 100644
index 000000000000..6c0ff48a0330
--- /dev/null
+++ b/www/iridium/files/patch-gpu_config_BUILD.gn
@@ -0,0 +1,27 @@
+--- gpu/config/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ gpu/config/BUILD.gn
+@@ -8,7 +8,8 @@ import("//build/config/ui.gni")
+
+ declare_args() {
+ # Use the PCI lib to collect GPU information on Linux.
+- use_libpci = is_linux && (!is_chromecast || is_cast_desktop_build) &&
++ use_libpci = (is_linux || is_bsd) &&
++ (!is_chromecast || is_cast_desktop_build) &&
+ (use_x11 || use_ozone)
+ }
+
+@@ -101,6 +102,14 @@ source_set("config_sources") {
+ ]
+ }
+ }
++
++ if (is_bsd) {
++ sources -= [
++ "gpu_info_collector_linux.cc",
++ "gpu_info_collector_linux.h"
++ ]
++ }
++
+ if (is_mac) {
+ libs = [
+ "IOKit.framework",
diff --git a/www/iridium/files/patch-gpu_config_gpu__control__list.cc b/www/iridium/files/patch-gpu_config_gpu__control__list.cc
new file mode 100644
index 000000000000..6167136d871a
--- /dev/null
+++ b/www/iridium/files/patch-gpu_config_gpu__control__list.cc
@@ -0,0 +1,32 @@
+--- gpu/config/gpu_control_list.cc.orig 2017-04-19 19:06:34 UTC
++++ gpu/config/gpu_control_list.cc
+@@ -19,7 +19,11 @@
+ #include "base/sys_info.h"
+ #include "gpu/config/gpu_info.h"
+ #include "gpu/config/gpu_util.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ namespace gpu {
+ namespace {
+@@ -1183,7 +1187,7 @@ GpuControlList::GpuControlListEntry::GLT
+ GpuControlList::GpuControlListEntry::GetDefaultGLType() {
+ #if defined(OS_CHROMEOS)
+ return kGLTypeGL;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return kGLTypeGL;
+ #elif defined(OS_MACOSX)
+ return kGLTypeGL;
+@@ -1642,7 +1646,7 @@ GpuControlList::OsType GpuControlList::G
+ return kOsWin;
+ #elif defined(OS_ANDROID)
+ return kOsAndroid;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return kOsLinux;
+ #elif defined(OS_MACOSX)
+ return kOsMacosx;
diff --git a/www/iridium/files/patch-gpu_config_gpu__control__list__unittest.cc b/www/iridium/files/patch-gpu_config_gpu__control__list__unittest.cc
new file mode 100644
index 000000000000..ee60865ae3bb
--- /dev/null
+++ b/www/iridium/files/patch-gpu_config_gpu__control__list__unittest.cc
@@ -0,0 +1,12 @@
+--- gpu/config/gpu_control_list_unittest.cc.orig 2017-04-19 19:06:34 UTC
++++ gpu/config/gpu_control_list_unittest.cc
+@@ -175,8 +175,7 @@ TEST_F(GpuControlListTest, VendorOnAllOs
+ features = control_list->MakeDecision(
+ GpuControlList::kOsLinux, kOsVersion, gpu_info());
+ EXPECT_SINGLE_FEATURE(features, TEST_FEATURE_0);
+-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || \
+- defined(OS_OPENBSD)
++#if defined(OS_WIN) || (defined(OS_POSIX) && !defined(OS_ANDROID))
+ // ControlList entries will be filtered to the current OS only upon loading.
+ EXPECT_TRUE(control_list->LoadList(
+ vendor_json, GpuControlList::kCurrentOsOnly));
diff --git a/www/iridium/files/patch-gpu_config_gpu__info__collector.cc b/www/iridium/files/patch-gpu_config_gpu__info__collector.cc
new file mode 100644
index 000000000000..562c2f671330
--- /dev/null
+++ b/www/iridium/files/patch-gpu_config_gpu__info__collector.cc
@@ -0,0 +1,13 @@
+--- gpu/config/gpu_info_collector.cc.orig 2017-04-19 19:06:34 UTC
++++ gpu/config/gpu_info_collector.cc
+@@ -193,8 +193,10 @@ CollectInfoResult CollectGraphicsInfoGL(
+ gpu_info->pixel_shader_version = glsl_version;
+ gpu_info->vertex_shader_version = glsl_version;
+
++#ifndef __FreeBSD__
+ IdentifyActiveGPU(gpu_info);
+ return CollectDriverInfoGL(gpu_info);
++#endif
+ }
+
+ void MergeGPUInfoGL(GPUInfo* basic_gpu_info,
diff --git a/www/iridium/files/patch-gpu_config_gpu__test__config.cc b/www/iridium/files/patch-gpu_config_gpu__test__config.cc
new file mode 100644
index 000000000000..b2c8de76102f
--- /dev/null
+++ b/www/iridium/files/patch-gpu_config_gpu__test__config.cc
@@ -0,0 +1,30 @@
+--- gpu/config/gpu_test_config.cc.orig 2017-04-19 19:06:34 UTC
++++ gpu/config/gpu_test_config.cc
+@@ -24,7 +24,7 @@ namespace {
+ GPUTestConfig::OS GetCurrentOS() {
+ #if defined(OS_CHROMEOS)
+ return GPUTestConfig::kOsChromeOS;
+-#elif defined(OS_LINUX) || defined(OS_OPENBSD)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return GPUTestConfig::kOsLinux;
+ #elif defined(OS_WIN)
+ int32_t major_version = 0;
+@@ -255,6 +255,10 @@ bool GPUTestBotConfig::LoadCurrentConfig
+ bool rt;
+ if (gpu_info == NULL) {
+ GPUInfo my_gpu_info;
++#if defined(OS_FREEBSD)
++ rt = false;
++ LOG(WARNING) << "CollectGpuID not present on FreeBSD";
++#else
+ CollectInfoResult result = CollectGpuID(
+ &my_gpu_info.gpu.vendor_id, &my_gpu_info.gpu.device_id);
+ if (result != kCollectInfoSuccess) {
+@@ -264,6 +268,7 @@ bool GPUTestBotConfig::LoadCurrentConfig
+ } else {
+ rt = SetGPUInfo(my_gpu_info);
+ }
++#endif
+ } else {
+ rt = SetGPUInfo(*gpu_info);
+ }
diff --git a/www/iridium/files/patch-gpu_gles2__conform__support_BUILD.gn b/www/iridium/files/patch-gpu_gles2__conform__support_BUILD.gn
new file mode 100644
index 000000000000..82d02b2c1408
--- /dev/null
+++ b/www/iridium/files/patch-gpu_gles2__conform__support_BUILD.gn
@@ -0,0 +1,20 @@
+--- gpu/gles2_conform_support/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ gpu/gles2_conform_support/BUILD.gn
+@@ -60,7 +60,7 @@ executable("gles2_conform_support") {
+ "//gpu/gles2_conform_support/egl",
+ "//ui/gl",
+ ]
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [
+ "native/egl_native_aura.cc",
+ "native/egl_native_x11.cc",
+@@ -413,7 +413,7 @@ if (internal_gles2_conform_tests) {
+ # Must be done this way for warning flags to be ordered correctly.
+ ":gles2_conform_test_warnings",
+ ]
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ if (!is_chromeos) {
+ deps += [ "//build/config/linux/gtk2" ]
+ }
diff --git a/www/iridium/files/patch-gpu_gles2__conform__support_native_BUILD.gn b/www/iridium/files/patch-gpu_gles2__conform__support_native_BUILD.gn
new file mode 100644
index 000000000000..92ca9db6337d
--- /dev/null
+++ b/www/iridium/files/patch-gpu_gles2__conform__support_native_BUILD.gn
@@ -0,0 +1,11 @@
+--- gpu/gles2_conform_support/native/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ gpu/gles2_conform_support/native/BUILD.gn
+@@ -20,7 +20,7 @@ source_set("native") {
+ "//gpu/gles2_conform_support/egl",
+ "//ui/gl",
+ ]
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [
+ "egl_native_aura.cc",
+ "egl_native_x11.cc",
diff --git a/www/iridium/files/patch-gpu_ipc_client_BUILD.gn b/www/iridium/files/patch-gpu_ipc_client_BUILD.gn
new file mode 100644
index 000000000000..8e5c1bbe3e2b
--- /dev/null
+++ b/www/iridium/files/patch-gpu_ipc_client_BUILD.gn
@@ -0,0 +1,10 @@
+--- gpu/ipc/client/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ gpu/ipc/client/BUILD.gn
+@@ -44,6 +44,7 @@ source_set("ipc_client_sources") {
+ configs += [
+ "//build/config/compiler:no_size_t_to_int_warning",
+ "//gpu:gpu_implementation",
++ "//build/config/linux:x11",
+ ]
+ deps = [
+ "//base",
diff --git a/www/iridium/files/patch-gpu_ipc_service_BUILD.gn b/www/iridium/files/patch-gpu_ipc_service_BUILD.gn
new file mode 100644
index 000000000000..bc824277d143
--- /dev/null
+++ b/www/iridium/files/patch-gpu_ipc_service_BUILD.gn
@@ -0,0 +1,16 @@
+--- gpu/ipc/service/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ gpu/ipc/service/BUILD.gn
+@@ -110,11 +110,12 @@ target(link_target_type, "ipc_service_so
+ ]
+ libs += [ "android" ]
+ }
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [ "image_transport_surface_linux.cc" ]
+ }
+ if (use_x11) {
+ sources += [ "x_util.h" ]
++ configs += [ "//build/config/linux:x11" ]
+ }
+ if (use_ozone) {
+ sources += [
diff --git a/www/iridium/files/patch-gpu_ipc_service_gpu__init.cc b/www/iridium/files/patch-gpu_ipc_service_gpu__init.cc
new file mode 100644
index 000000000000..ef61b49902e3
--- /dev/null
+++ b/www/iridium/files/patch-gpu_ipc_service_gpu__init.cc
@@ -0,0 +1,38 @@
+--- gpu/ipc/service/gpu_init.cc.orig 2017-04-19 19:06:34 UTC
++++ gpu/ipc/service/gpu_init.cc
+@@ -76,7 +76,7 @@ void GetGpuInfoFromCommandLine(gpu::GPUI
+ }
+ }
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ void CollectGraphicsInfo(gpu::GPUInfo& gpu_info) {
+ TRACE_EVENT0("gpu,startup", "Collect Graphics Info");
+
+@@ -95,7 +95,7 @@ void CollectGraphicsInfo(gpu::GPUInfo& g
+ break;
+ }
+ }
+-#endif // defined(OS_MACOSX)
++#endif // defined(OS_MACOSX) && defined(OS_BSD)
+
+ #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
+ bool CanAccessNvidiaDeviceFile() {
+@@ -194,7 +194,7 @@ bool GpuInit::InitializeAndStartSandbox(
+ // By skipping the following code on Mac, we don't really lose anything,
+ // because the basic GPU information is passed down from the host process.
+ base::TimeTicks before_collect_context_graphics_info = base::TimeTicks::Now();
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ CollectGraphicsInfo(gpu_info_);
+ if (gpu_info_.context_info_state == gpu::kCollectInfoFatalFailure)
+ return false;
+@@ -211,7 +211,7 @@ bool GpuInit::InitializeAndStartSandbox(
+ gpu::ApplyGpuDriverBugWorkarounds(
+ gpu_info_, const_cast<base::CommandLine*>(&command_line));
+ }
+-#endif // !defined(OS_MACOSX)
++#endif // !defined(OS_MACOSX) && !defined(OS_BSD)
+
+ gpu_feature_info_ = gpu::GetGpuFeatureInfo(gpu_info_, command_line);
+
diff --git a/www/iridium/files/patch-gpu_tools_compositor__model__bench_BUILD.gn b/www/iridium/files/patch-gpu_tools_compositor__model__bench_BUILD.gn
new file mode 100644
index 000000000000..6a609390b36a
--- /dev/null
+++ b/www/iridium/files/patch-gpu_tools_compositor__model__bench_BUILD.gn
@@ -0,0 +1,11 @@
+--- gpu/tools/compositor_model_bench/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ gpu/tools/compositor_model_bench/BUILD.gn
+@@ -4,7 +4,7 @@
+
+ import("//build/config/ui.gni")
+
+-if (is_linux && !is_chromeos && current_cpu != "arm" && use_x11) {
++if ((is_linux || is_bsd) && !is_chromeos && current_cpu != "arm" && use_x11) {
+ executable("compositor_model_bench") {
+ sources = [
+ "compositor_model_bench.cc",
diff --git a/www/iridium/files/patch-gpu_vulkan_BUILD.gn b/www/iridium/files/patch-gpu_vulkan_BUILD.gn
new file mode 100644
index 000000000000..2dd0aa4e6971
--- /dev/null
+++ b/www/iridium/files/patch-gpu_vulkan_BUILD.gn
@@ -0,0 +1,11 @@
+--- gpu/vulkan/BUILD.gn.orig 2017-04-19 19:06:34 UTC
++++ gpu/vulkan/BUILD.gn
+@@ -14,7 +14,7 @@ if (enable_vulkan) {
+ component("vulkan") {
+ output_name = "vulkan_wrapper"
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ assert(use_x11, "Vulkan only support x11 at this point.")
+ sources = [
+ "vulkan_command_buffer.cc",
diff --git a/www/iridium/files/patch-ipc_ipc__channel.h b/www/iridium/files/patch-ipc_ipc__channel.h
new file mode 100644
index 000000000000..ffe5b22273a5
--- /dev/null
+++ b/www/iridium/files/patch-ipc_ipc__channel.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_channel.h.orig 2017-04-19 19:06:35 UTC
++++ ipc/ipc_channel.h
+@@ -246,7 +246,7 @@ class IPC_EXPORT Channel : public Sender
+ static std::string GenerateUniqueRandomChannelID();
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_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/iridium/files/patch-ipc_ipc__message__utils.cc b/www/iridium/files/patch-ipc_ipc__message__utils.cc
new file mode 100644
index 000000000000..ccffba65690b
--- /dev/null
+++ b/www/iridium/files/patch-ipc_ipc__message__utils.cc
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.cc.orig 2017-04-19 19:06:35 UTC
++++ ipc/ipc_message_utils.cc
+@@ -421,7 +421,7 @@ void ParamTraits<unsigned int>::Log(cons
+ l->append(base::UintToString(p));
+ }
+
+-#if defined(OS_WIN) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) || \
+ (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ void ParamTraits<long>::Log(const param_type& p, std::string* l) {
+ l->append(base::Int64ToString(static_cast<int64_t>(p)));
diff --git a/www/iridium/files/patch-ipc_ipc__message__utils.h b/www/iridium/files/patch-ipc_ipc__message__utils.h
new file mode 100644
index 000000000000..4d0604a409f0
--- /dev/null
+++ b/www/iridium/files/patch-ipc_ipc__message__utils.h
@@ -0,0 +1,11 @@
+--- ipc/ipc_message_utils.h.orig 2017-04-19 19:06:35 UTC
++++ ipc/ipc_message_utils.h
+@@ -209,7 +209,7 @@ struct ParamTraits<unsigned int> {
+ // 3) Android 64 bit also has int64_t typedef'd to long.
+ // 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 defined(OS_WIN) || defined(OS_LINUX) || \
++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) || \
+ (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS))
+ template <>
+ struct ParamTraits<long> {
diff --git a/www/iridium/files/patch-iridium_trknotify.cpp b/www/iridium/files/patch-iridium_trknotify.cpp
new file mode 100644
index 000000000000..ddf562a6fca9
--- /dev/null
+++ b/www/iridium/files/patch-iridium_trknotify.cpp
@@ -0,0 +1,20 @@
+--- iridium/trknotify.cpp.orig 2017-04-24 14:40:27 UTC
++++ iridium/trknotify.cpp
+@@ -5,7 +5,7 @@
+ * found in the LICENSE file.
+ */
+ #include <cstdio>
+-#ifdef __linux__
++#ifdef __FreeBSD__
+ # include <unistd.h>
+ #endif
+ #include "chrome/browser/infobars/infobar_service.h"
+@@ -21,7 +21,7 @@ namespace iridium {
+
+ void log_url_request(const std::string &caller, const GURL &url)
+ {
+-#ifdef __linux__
++#ifdef __FreeBSD__
+ bool tty = isatty(fileno(stderr));
+ #else
+ bool tty = false;
diff --git a/www/iridium/files/patch-mash_package_mash__packaged__service.cc b/www/iridium/files/patch-mash_package_mash__packaged__service.cc
new file mode 100644
index 000000000000..5cc467ad6b05
--- /dev/null
+++ b/www/iridium/files/patch-mash_package_mash__packaged__service.cc
@@ -0,0 +1,20 @@
+--- mash/package/mash_packaged_service.cc.orig 2017-04-19 19:06:35 UTC
++++ mash/package/mash_packaged_service.cc
+@@ -30,7 +30,7 @@
+ #include "ash/touch_hud/mus/touch_hud_application.h" // nogncheck
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/font_service/font_service_app.h"
+ #endif
+
+@@ -104,7 +104,7 @@ std::unique_ptr<service_manager::Service
+ return base::WrapUnique(new mash::task_viewer::TaskViewer);
+ if (name == "test_ime_driver")
+ return base::WrapUnique(new ui::test::TestIMEApplication);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (name == "font_service")
+ return base::WrapUnique(new font_service::FontServiceApp);
+ #endif
diff --git a/www/iridium/files/patch-media__audio__alsa__audio_manager_alsa.cc b/www/iridium/files/patch-media__audio__alsa__audio_manager_alsa.cc
new file mode 100644
index 000000000000..09239026a2d9
--- /dev/null
+++ b/www/iridium/files/patch-media__audio__alsa__audio_manager_alsa.cc
@@ -0,0 +1,54 @@
+--- media/audio/alsa/audio_manager_alsa.cc.orig 2017-04-19 19:06:35 UTC
++++ media/audio/alsa/audio_manager_alsa.cc
+@@ -138,7 +138,9 @@ void AudioManagerAlsa::GetAlsaAudioDevic
+ int card = -1;
+
+ // Loop through the sound cards to get ALSA device hints.
++#ifdef OS_LINUX
+ while (!wrapper_->CardNext(&card) && card >= 0) {
++#endif
+ void** hints = NULL;
+ int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints);
+ if (!error) {
+@@ -150,7 +152,9 @@ void AudioManagerAlsa::GetAlsaAudioDevic
+ DLOG(WARNING) << "GetAlsaAudioDevices: unable to get device hints: "
+ << wrapper_->StrError(error);
+ }
++#ifdef OS_LINUX
+ }
++#endif
+ }
+
+ void AudioManagerAlsa::GetAlsaDevicesInfo(AudioManagerAlsa::StreamType type,
+@@ -232,7 +236,11 @@ bool AudioManagerAlsa::IsAlsaDeviceAvail
+ // goes through software conversion if needed (e.g. incompatible
+ // sample rate).
+ // TODO(joi): Should we prefer "hw" instead?
++#ifdef OS_LINUX
+ static const char kDeviceTypeDesired[] = "plughw";
++#else
++ static const char kDeviceTypeDesired[] = "plug";
++#endif
+ return strncmp(kDeviceTypeDesired,
+ device_name,
+ arraysize(kDeviceTypeDesired) - 1) == 0;
+@@ -256,7 +264,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDe
+ // Loop through the sound cards.
+ // Don't use snd_device_name_hint(-1,..) since there is a access violation
+ // inside this ALSA API with libasound.so.2.0.0.
++#ifdef OS_LINUX
+ 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++) {
+@@ -280,7 +290,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDe
+ DLOG(WARNING) << "HasAnyAudioDevice: unable to get device hints: "
+ << wrapper_->StrError(error);
+ }
++#ifdef OS_LINUX
+ }
++#endif
+
+ return has_device;
+ }
diff --git a/www/iridium/files/patch-media_audio_BUILD.gn b/www/iridium/files/patch-media_audio_BUILD.gn
new file mode 100644
index 000000000000..0c873b467e77
--- /dev/null
+++ b/www/iridium/files/patch-media_audio_BUILD.gn
@@ -0,0 +1,25 @@
+--- media/audio/BUILD.gn.orig 2017-04-19 19:06:35 UTC
++++ media/audio/BUILD.gn
+@@ -212,7 +212,7 @@ source_set("audio") {
+ deps += [ "//media/base/android:media_jni_headers" ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [ "linux/audio_manager_linux.cc" ]
+ }
+
+@@ -261,10 +261,12 @@ source_set("audio") {
+ configs += [ ":libpulse" ]
+ } else {
+ # TODO(ajwong): Technically, this dl should go in the action.
+- libs += [ "dl" ]
+ deps += [ ":pulse_generate_stubs" ]
+ sources += get_target_outputs(":pulse_generate_stubs")
+ }
++ if (is_linux) {
++ libs += [ "dl" ]
++ }
+ }
+
+ configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
diff --git a/www/iridium/files/patch-media_audio_audio__manager.cc b/www/iridium/files/patch-media_audio_audio__manager.cc
new file mode 100644
index 000000000000..73fb1704a152
--- /dev/null
+++ b/www/iridium/files/patch-media_audio_audio__manager.cc
@@ -0,0 +1,29 @@
+--- media/audio/audio_manager.cc.orig 2017-04-19 19:06:35 UTC
++++ media/audio/audio_manager.cc
+@@ -93,7 +93,7 @@ class AudioManagerHelper : public base::
+ }
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ void set_app_name(const std::string& app_name) { app_name_ = app_name; }
+ const std::string& app_name() const { return app_name_; }
+ #endif
+@@ -227,7 +227,7 @@ class AudioManagerHelper : public base::
+ std::unique_ptr<base::win::ScopedCOMInitializer> com_initializer_for_testing_;
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ std::string app_name_;
+ #endif
+
+@@ -342,7 +342,7 @@ void AudioManager::StartHangMonitorIfNee
+ GetHelper()->StartHangTimer(std::move(task_runner));
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ // static
+ void AudioManager::SetGlobalAppName(const std::string& app_name) {
+ GetHelper()->set_app_name(app_name);
diff --git a/www/iridium/files/patch-media_audio_audio__manager.h b/www/iridium/files/patch-media_audio_audio__manager.h
new file mode 100644
index 000000000000..8431068e1eb8
--- /dev/null
+++ b/www/iridium/files/patch-media_audio_audio__manager.h
@@ -0,0 +1,11 @@
+--- media/audio/audio_manager.h.orig 2017-04-19 19:06:35 UTC
++++ media/audio/audio_manager.h
+@@ -81,7 +81,7 @@ class MEDIA_EXPORT AudioManager {
+ static void StartHangMonitorIfNeeded(
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ // Sets the name of the audio source as seen by external apps. Only actually
+ // used with PulseAudio as of this writing.
+ static void SetGlobalAppName(const std::string& app_name);
diff --git a/www/iridium/files/patch-media_base_BUILD.gn b/www/iridium/files/patch-media_base_BUILD.gn
new file mode 100644
index 000000000000..2c8aea8fbb06
--- /dev/null
+++ b/www/iridium/files/patch-media_base_BUILD.gn
@@ -0,0 +1,20 @@
+--- media/base/BUILD.gn.orig 2017-04-19 19:06:35 UTC
++++ media/base/BUILD.gn
+@@ -305,7 +305,7 @@ target(link_target_type, "base") {
+ allow_circular_includes_from += [ "//media/base/android" ]
+ }
+
+- if (is_linux && use_x11) {
++ if ((is_linux || is_bsd) && use_x11) {
+ configs += [
+ "//build/config/linux:x11",
+ "//build/config/linux:xext",
+@@ -331,7 +331,7 @@ target(link_target_type, "base") {
+ defines += [ "DISABLE_USER_INPUT_MONITOR" ]
+ }
+
+- if (is_linux || is_win) {
++ if (is_linux || is_bsd || is_win) {
+ sources += [
+ "keyboard_event_counter.cc",
+ "keyboard_event_counter.h",
diff --git a/www/iridium/files/patch-media_base_audio__latency.cc b/www/iridium/files/patch-media_base_audio__latency.cc
new file mode 100644
index 000000000000..08780cd5dd99
--- /dev/null
+++ b/www/iridium/files/patch-media_base_audio__latency.cc
@@ -0,0 +1,11 @@
+--- media/base/audio_latency.cc.orig 2017-04-19 19:06:35 UTC
++++ media/base/audio_latency.cc
+@@ -83,7 +83,7 @@ int AudioLatency::GetRtcBufferSize(int s
+ return frames_per_buffer;
+ }
+
+-#if defined(OS_LINUX) || defined(OS_MACOSX)
++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ // On Linux and MacOS, 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/iridium/files/patch-media_base_video__frame.cc b/www/iridium/files/patch-media_base_video__frame.cc
new file mode 100644
index 000000000000..29406d927dca
--- /dev/null
+++ b/www/iridium/files/patch-media_base_video__frame.cc
@@ -0,0 +1,47 @@
+--- media/base/video_frame.cc.orig 2017-04-19 19:06:35 UTC
++++ media/base/video_frame.cc
+@@ -53,7 +53,7 @@ static std::string StorageTypeToString(
+ return "OWNED_MEMORY";
+ case VideoFrame::STORAGE_SHMEM:
+ return "SHMEM";
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ case VideoFrame::STORAGE_DMABUFS:
+ return "DMABUFS";
+ #endif
+@@ -69,7 +69,7 @@ static std::string StorageTypeToString(
+ // static
+ static bool IsStorageTypeMappable(VideoFrame::StorageType storage_type) {
+ return
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // This is not strictly needed but makes explicit that, at VideoFrame
+ // level, DmaBufs are not mappable from userspace.
+ storage_type != VideoFrame::STORAGE_DMABUFS &&
+@@ -324,7 +324,7 @@ scoped_refptr<VideoFrame> VideoFrame::Wr
+ return frame;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // static
+ scoped_refptr<VideoFrame> VideoFrame::WrapExternalDmabufs(
+ VideoPixelFormat format,
+@@ -436,7 +436,7 @@ scoped_refptr<VideoFrame> VideoFrame::Wr
+ wrapping_frame->data_[i] = frame->data(i);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // If there are any |dmabuf_fds_| plugged in, we should duplicate them.
+ if (frame->storage_type() == STORAGE_DMABUFS) {
+ std::vector<int> original_fds;
+@@ -722,7 +722,7 @@ size_t VideoFrame::shared_memory_offset(
+ return shared_memory_offset_;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ int VideoFrame::dmabuf_fd(size_t plane) const {
+ DCHECK_EQ(storage_type_, STORAGE_DMABUFS);
+ DCHECK(IsValidPlane(plane, format_));
diff --git a/www/iridium/files/patch-media_base_video__frame.h b/www/iridium/files/patch-media_base_video__frame.h
new file mode 100644
index 000000000000..3f650d9953ce
--- /dev/null
+++ b/www/iridium/files/patch-media_base_video__frame.h
@@ -0,0 +1,38 @@
+--- media/base/video_frame.h.orig 2017-04-19 19:06:35 UTC
++++ media/base/video_frame.h
+@@ -62,7 +62,7 @@ class MEDIA_EXPORT VideoFrame : public b
+ STORAGE_UNOWNED_MEMORY = 2, // External, non owned data pointers.
+ STORAGE_OWNED_MEMORY = 3, // VideoFrame has allocated its own data buffer.
+ STORAGE_SHMEM = 4, // Pixels are backed by Shared Memory.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // TODO(mcasas): Consider turning this type into STORAGE_NATIVE or another
+ // meaningful name and handle it appropriately in all cases.
+ STORAGE_DMABUFS = 5, // Each plane is stored into a DmaBuf.
+@@ -186,7 +186,7 @@ class MEDIA_EXPORT VideoFrame : public b
+ uint8_t* a_data,
+ base::TimeDelta timestamp);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Wraps provided dmabufs
+ // (https://www.kernel.org/doc/Documentation/dma-buf-sharing.txt) with a
+ // VideoFrame. The dmabuf fds are dup()ed on creation, so that the VideoFrame
+@@ -336,7 +336,7 @@ class MEDIA_EXPORT VideoFrame : public b
+ // Returns the offset into the shared memory where the frame data begins.
+ size_t shared_memory_offset() const;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Returns backing DmaBuf file descriptor for given |plane|, if present, or
+ // -1 if not.
+ // TODO(mcasas): Rename to DmabufFd() to comply with Style Guide.
+@@ -528,7 +528,7 @@ class MEDIA_EXPORT VideoFrame : public b
+ base::SharedMemoryHandle shared_memory_handle_;
+ size_t shared_memory_offset_;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Dmabufs for each plane. If set, this frame has DmaBuf backing in some way.
+ base::ScopedFD dmabuf_fds_[kMaxPlanes];
+ #endif
diff --git a/www/iridium/files/patch-media_capture_BUILD.gn b/www/iridium/files/patch-media_capture_BUILD.gn
new file mode 100644
index 000000000000..c48066bb3458
--- /dev/null
+++ b/www/iridium/files/patch-media_capture_BUILD.gn
@@ -0,0 +1,19 @@
+--- media/capture/BUILD.gn.orig 2017-04-19 19:06:35 UTC
++++ media/capture/BUILD.gn
+@@ -153,6 +153,16 @@ component("capture_lib") {
+ ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "video/linux/video_capture_device_linux.cc",
++ "video/linux/video_capture_device_linux.h",
++ "video/linux/video_capture_device_factory_linux.cc",
++ "video/linux/video_capture_device_factory_linux.h",
++ "video/linux/v4l2_capture_delegate.cc",
++ ]
++ }
++
+ if (is_win) {
+ deps += [ "//media/base/win" ]
+ libs = [
diff --git a/www/iridium/files/patch-media_capture_video_fake__video__capture__device__factory.cc b/www/iridium/files/patch-media_capture_video_fake__video__capture__device__factory.cc
new file mode 100644
index 000000000000..182a4ca69954
--- /dev/null
+++ b/www/iridium/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 2017-04-19 19:06:35 UTC
++++ media/capture/video/fake_video_capture_device_factory.cc
+@@ -192,7 +192,7 @@ void FakeVideoCaptureDeviceFactory::GetD
+ for (const auto& entry : devices_config_) {
+ device_descriptors->emplace_back(
+ base::StringPrintf("fake_device_%d", entry_index), entry.device_id,
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE
+ #elif defined(OS_MACOSX)
+ VideoCaptureApi::MACOSX_AVFOUNDATION
diff --git a/www/iridium/files/patch-media_capture_video_file__video__capture__device__factory.cc b/www/iridium/files/patch-media_capture_video_file__video__capture__device__factory.cc
new file mode 100644
index 000000000000..48e064a8930b
--- /dev/null
+++ b/www/iridium/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 2017-04-19 19:06:35 UTC
++++ media/capture/video/file_video_capture_device_factory.cc
+@@ -53,7 +53,7 @@ void FileVideoCaptureDeviceFactory::GetD
+ #elif defined(OS_MACOSX)
+ command_line_file_path.value(), kFileVideoCaptureDeviceName,
+ VideoCaptureApi::MACOSX_AVFOUNDATION
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ command_line_file_path.value(), kFileVideoCaptureDeviceName,
+ VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE
+ #else
diff --git a/www/iridium/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc b/www/iridium/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
new file mode 100644
index 000000000000..575db560fa12
--- /dev/null
+++ b/www/iridium/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc
@@ -0,0 +1,26 @@
+--- media/capture/video/linux/v4l2_capture_delegate.cc.orig 2017-04-19 19:06:35 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>
+@@ -21,10 +23,10 @@
+ #include "media/capture/video/blob_utils.h"
+ #include "media/capture/video/linux/video_capture_device_linux.h"
+
+-#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.
diff --git a/www/iridium/files/patch-media_capture_video_linux_video__capture__device__linux.cc b/www/iridium/files/patch-media_capture_video_linux_video__capture__device__linux.cc
new file mode 100644
index 000000000000..695e2db1e623
--- /dev/null
+++ b/www/iridium/files/patch-media_capture_video_linux_video__capture__device__linux.cc
@@ -0,0 +1,62 @@
+--- media/capture/video/linux/video_capture_device_linux.cc.orig 2017-04-19 19:06:35 UTC
++++ media/capture/video/linux/video_capture_device_linux.cc
+@@ -21,6 +21,7 @@
+
+ namespace media {
+
++#if !defined(OS_FREEBSD)
+ // Translates Video4Linux pixel formats to Chromium pixel formats.
+ // static
+ VideoPixelFormat VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat(
+@@ -34,6 +35,7 @@ std::list<uint32_t> VideoCaptureDeviceLi
+ bool favour_mjpeg) {
+ return V4L2CaptureDelegate::GetListOfUsableFourCcs(favour_mjpeg);
+ }
++#endif // !defined(OS_FREEBSD)
+
+ VideoCaptureDeviceLinux::VideoCaptureDeviceLinux(
+ const VideoCaptureDeviceDescriptor& device_descriptor)
+@@ -47,6 +49,7 @@ VideoCaptureDeviceLinux::~VideoCaptureDe
+ v4l2_thread_.Stop();
+ }
+
++#if !defined(OS_FREEBSD)
+ void VideoCaptureDeviceLinux::AllocateAndStart(
+ const VideoCaptureParams& params,
+ std::unique_ptr<VideoCaptureDevice::Client> client) {
+@@ -74,7 +77,13 @@ void VideoCaptureDeviceLinux::AllocateAn
+ v4l2_thread_.task_runner()->PostTask(FROM_HERE, request);
+ photo_requests_queue_.clear();
+ }
++#else // !defined(OS_FREEBSD)
++void VideoCaptureDeviceLinux::AllocateAndStart(
++ const VideoCaptureParams& params,
++ std::unique_ptr<VideoCaptureDevice::Client> client) {}
++#endif // !defined(OS_FREEBSD)
+
++#if !defined(OS_FREEBSD)
+ void VideoCaptureDeviceLinux::StopAndDeAllocate() {
+ if (!v4l2_thread_.IsRunning())
+ return; // Wrong state.
+@@ -123,7 +132,11 @@ void VideoCaptureDeviceLinux::SetPhotoOp
+ }
+ v4l2_thread_.task_runner()->PostTask(FROM_HERE, std::move(functor));
+ }
++#else // !defined(OS_FREEBSD)
++void VideoCaptureDeviceLinux::StopAndDeAllocate() {}
++#endif // !defined(OS_FREEBSD)
+
++#if !defined(OS_FREEBSD)
+ void VideoCaptureDeviceLinux::SetRotation(int rotation) {
+ if (v4l2_thread_.IsRunning()) {
+ v4l2_thread_.task_runner()->PostTask(
+@@ -131,6 +144,9 @@ void VideoCaptureDeviceLinux::SetRotatio
+ base::Bind(&V4L2CaptureDelegate::SetRotation, capture_impl_, rotation));
+ }
+ }
++#else // !defined(OS_FREEBSD)
++void VideoCaptureDeviceLinux::SetRotation(int rotation) {}
++#endif // !defined(OS_FREEBSD)
+
+ // static
+ int VideoCaptureDeviceLinux::TranslatePowerLineFrequencyToV4L2(
diff --git a/www/iridium/files/patch-media_capture_video_video__capture__device__client.cc b/www/iridium/files/patch-media_capture_video_video__capture__device__client.cc
new file mode 100644
index 000000000000..0bd1db34f676
--- /dev/null
+++ b/www/iridium/files/patch-media_capture_video_video__capture__device__client.cc
@@ -0,0 +1,11 @@
+--- media/capture/video/video_capture_device_client.cc.orig 2017-04-19 19:06:35 UTC
++++ media/capture/video/video_capture_device_client.cc
+@@ -238,7 +238,7 @@ void VideoCaptureDeviceClient::OnIncomin
+ // see http://linuxtv.org/downloads/v4l-dvb-apis/packed-rgb.html.
+ // Windows RGB24 defines blue at lowest byte,
+ // see https://msdn.microsoft.com/en-us/library/windows/desktop/dd407253
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ origin_colorspace = libyuv::FOURCC_RAW;
+ #elif defined(OS_WIN)
+ origin_colorspace = libyuv::FOURCC_24BG;
diff --git a/www/iridium/files/patch-media_capture_video_video__capture__device__factory.cc b/www/iridium/files/patch-media_capture_video_video__capture__device__factory.cc
new file mode 100644
index 000000000000..3e51687048e4
--- /dev/null
+++ b/www/iridium/files/patch-media_capture_video_video__capture__device__factory.cc
@@ -0,0 +1,30 @@
+--- media/capture/video/video_capture_device_factory.cc.orig 2017-04-19 19:06:35 UTC
++++ media/capture/video/video_capture_device_factory.cc
+@@ -18,6 +18,10 @@ namespace media {
+ std::unique_ptr<VideoCaptureDeviceFactory>
+ VideoCaptureDeviceFactory::CreateFactory(
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
++#if defined(OS_BSD)
++ return std::unique_ptr<VideoCaptureDeviceFactory>(
++ new media::FakeVideoCaptureDeviceFactory());
++#else
+ const base::CommandLine* command_line =
+ base::CommandLine::ForCurrentProcess();
+ // Use a Fake or File Video Device Factory if the command line flags are
+@@ -42,6 +46,7 @@ VideoCaptureDeviceFactory::CreateFactory
+ return std::unique_ptr<VideoCaptureDeviceFactory>(
+ CreateVideoCaptureDeviceFactory(ui_task_runner));
+ }
++#endif
+ }
+
+ VideoCaptureDeviceFactory::VideoCaptureDeviceFactory() {
+@@ -61,7 +66,7 @@ void VideoCaptureDeviceFactory::Enumerat
+ callback.Run(std::move(device_descriptors));
+ }
+
+-#if !defined(OS_MACOSX) && !defined(OS_LINUX) && !defined(OS_ANDROID) && \
++#if !defined(OS_MACOSX) && !defined(OS_LINUX) && !defined(OS_BSD) && !defined(OS_ANDROID) && \
+ !defined(OS_WIN)
+ // static
+ VideoCaptureDeviceFactory*
diff --git a/www/iridium/files/patch-media_cast_BUILD.gn b/www/iridium/files/patch-media_cast_BUILD.gn
new file mode 100644
index 000000000000..32881404d145
--- /dev/null
+++ b/www/iridium/files/patch-media_cast_BUILD.gn
@@ -0,0 +1,29 @@
+--- media/cast/BUILD.gn.orig 2017-04-19 19:06:35 UTC
++++ media/cast/BUILD.gn
+@@ -358,7 +358,7 @@ test("cast_unittests") {
+ }
+ }
+
+-if (is_win || is_mac || (is_linux && !is_chromeos)) {
++if (is_win || is_mac || (is_linux && !is_chromeos) || is_bsd) {
+ # This is a target for the collection of cast development tools. They are
+ # not built/linked into the Chromium browser.
+ group("testing_tools") {
+@@ -412,7 +412,7 @@ if (is_win || is_mac || (is_linux && !is
+ "//ui/gfx/geometry",
+ ]
+
+- if (is_linux && !is_chromeos && use_x11) {
++ if ((is_linux || is_bsd) && !is_chromeos && use_x11) {
+ sources += [
+ "test/linux_output_window.cc",
+ "test/linux_output_window.h",
+@@ -515,7 +515,7 @@ if (is_win || is_mac || (is_linux && !is
+ }
+ }
+
+-if (is_linux && !is_chromeos) {
++if ((is_linux || is_bsd) && !is_chromeos) {
+ test("tap_proxy") {
+ sources = [
+ "test/utility/tap_proxy.cc",
diff --git a/www/iridium/files/patch-media_cdm_ppapi_ppapi__cdm__adapter.gni b/www/iridium/files/patch-media_cdm_ppapi_ppapi__cdm__adapter.gni
new file mode 100644
index 000000000000..f99a58f5a90b
--- /dev/null
+++ b/www/iridium/files/patch-media_cdm_ppapi_ppapi__cdm__adapter.gni
@@ -0,0 +1,20 @@
+--- media/cdm/ppapi/ppapi_cdm_adapter.gni.orig 2017-04-19 19:06:35 UTC
++++ media/cdm/ppapi/ppapi_cdm_adapter.gni
+@@ -5,7 +5,7 @@
+ # This template defines a CDM adapter target. Just use this as you would a
+ # normal target and everything should work correctly.
+ template("ppapi_cdm_adapter") {
+- if (is_mac || is_linux) {
++ if (is_mac || is_linux || is_bsd) {
+ _target_type = "loadable_module"
+ } else {
+ _target_type = "shared_library"
+@@ -57,7 +57,7 @@ template("ppapi_cdm_adapter") {
+ libs += [ "rt" ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ # CDM adapter depends on a CDM in component and non-component builds.
+ configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
+ }
diff --git a/www/iridium/files/patch-media_ffmpeg_ffmpeg__common.h b/www/iridium/files/patch-media_ffmpeg_ffmpeg__common.h
new file mode 100644
index 000000000000..b1f46bea9b95
--- /dev/null
+++ b/www/iridium/files/patch-media_ffmpeg_ffmpeg__common.h
@@ -0,0 +1,19 @@
+--- media/ffmpeg/ffmpeg_common.h.orig 2017-04-19 19:06:35 UTC
++++ media/ffmpeg/ffmpeg_common.h
+@@ -25,7 +25,7 @@ extern "C" {
+ // Disable deprecated features which result in spammy compile warnings. This
+ // list of defines must mirror those in the 'defines' section of FFmpeg's
+ // BUILD.gn file or the headers below will generate different structures!
+-#define FF_API_CONVERGENCE_DURATION 0
++//#define FF_API_CONVERGENCE_DURATION 0
+ // Upstream libavcodec/utils.c still uses the deprecated
+ // av_dup_packet(), causing deprecation warnings.
+ // The normal fix for such things is to disable the feature as below,
+@@ -39,7 +39,6 @@ extern "C" {
+ MSVC_PUSH_DISABLE_WARNING(4244);
+ #include <libavcodec/avcodec.h>
+ #include <libavformat/avformat.h>
+-#include <libavformat/internal.h>
+ #include <libavformat/avio.h>
+ #include <libavutil/avutil.h>
+ #include <libavutil/imgutils.h>
diff --git a/www/iridium/files/patch-media_filters_ffmpeg__demuxer.cc b/www/iridium/files/patch-media_filters_ffmpeg__demuxer.cc
new file mode 100644
index 000000000000..0080af16013a
--- /dev/null
+++ b/www/iridium/files/patch-media_filters_ffmpeg__demuxer.cc
@@ -0,0 +1,27 @@
+--- media/filters/ffmpeg_demuxer.cc.orig 2017-04-19 19:06:35 UTC
++++ media/filters/ffmpeg_demuxer.cc
+@@ -1221,24 +1221,6 @@ void FFmpegDemuxer::OnFindStreamInfoDone
+ // If no estimate is found, the stream entry will be kInfiniteDuration.
+ std::vector<base::TimeDelta> start_time_estimates(format_context->nb_streams,
+ kInfiniteDuration);
+- const AVFormatInternal* internal = format_context->internal;
+- if (internal && internal->packet_buffer &&
+- format_context->start_time != static_cast<int64_t>(AV_NOPTS_VALUE)) {
+- struct AVPacketList* packet_buffer = internal->packet_buffer;
+- while (packet_buffer != internal->packet_buffer_end) {
+- DCHECK_LT(static_cast<size_t>(packet_buffer->pkt.stream_index),
+- start_time_estimates.size());
+- const AVStream* stream =
+- format_context->streams[packet_buffer->pkt.stream_index];
+- if (packet_buffer->pkt.pts != static_cast<int64_t>(AV_NOPTS_VALUE)) {
+- const base::TimeDelta packet_pts =
+- ConvertFromTimeBase(stream->time_base, packet_buffer->pkt.pts);
+- if (packet_pts < start_time_estimates[stream->index])
+- start_time_estimates[stream->index] = packet_pts;
+- }
+- packet_buffer = packet_buffer->next;
+- }
+- }
+
+ std::unique_ptr<MediaTracks> media_tracks(new MediaTracks());
+
diff --git a/www/iridium/files/patch-media_filters_vp9__parser.h b/www/iridium/files/patch-media_filters_vp9__parser.h
new file mode 100644
index 000000000000..8cb60f959e2e
--- /dev/null
+++ b/www/iridium/files/patch-media_filters_vp9__parser.h
@@ -0,0 +1,10 @@
+--- media/filters/vp9_parser.h.orig 2017-04-19 19:06:35 UTC
++++ media/filters/vp9_parser.h
+@@ -14,6 +14,7 @@
+
+ #include <stddef.h>
+ #include <stdint.h>
++#include <unistd.h>
+ #include <sys/types.h>
+
+ #include <deque>
diff --git a/www/iridium/files/patch-media_formats_common_offset__byte__queue.cc b/www/iridium/files/patch-media_formats_common_offset__byte__queue.cc
new file mode 100644
index 000000000000..2e1dd669c948
--- /dev/null
+++ b/www/iridium/files/patch-media_formats_common_offset__byte__queue.cc
@@ -0,0 +1,20 @@
+--- media/formats/common/offset_byte_queue.cc.orig 2017-04-19 19:06:35 UTC
++++ media/formats/common/offset_byte_queue.cc
+@@ -46,13 +46,13 @@ void OffsetByteQueue::PeekAt(int64_t off
+ *size = tail() - offset;
+ }
+
+-bool OffsetByteQueue::Trim(int64_t max_offset) {
+- if (max_offset < head_) return true;
+- if (max_offset > tail()) {
++bool OffsetByteQueue::Trim(int64_t _max_offset) {
++ if (_max_offset < head_) return true;
++ if (_max_offset > tail()) {
+ Pop(size_);
+ return false;
+ }
+- Pop(max_offset - head_);
++ Pop(_max_offset - head_);
+ return true;
+ }
+
diff --git a/www/iridium/files/patch-media_formats_common_offset__byte__queue.h b/www/iridium/files/patch-media_formats_common_offset__byte__queue.h
new file mode 100644
index 000000000000..807a0865e84b
--- /dev/null
+++ b/www/iridium/files/patch-media_formats_common_offset__byte__queue.h
@@ -0,0 +1,22 @@
+--- media/formats/common/offset_byte_queue.h.orig 2017-04-19 19:06:35 UTC
++++ media/formats/common/offset_byte_queue.h
+@@ -36,15 +36,15 @@ class MEDIA_EXPORT OffsetByteQueue {
+ // a null |buf| and a |size| of zero.
+ void PeekAt(int64_t offset, const uint8_t** buf, int* size);
+
+- // Marks the bytes up to (but not including) |max_offset| as ready for
++ // Marks the bytes up to (but not including) |_max_offset| as ready for
+ // deletion. This is relatively inexpensive, but will not necessarily reduce
+ // the resident buffer size right away (or ever).
+ //
+ // Returns true if the full range of bytes were successfully trimmed,
+- // including the case where |max_offset| is less than the current head.
+- // Returns false if |max_offset| > tail() (although all bytes currently
++ // including the case where |_max_offset| is less than the current head.
++ // Returns false if |_max_offset| > tail() (although all bytes currently
+ // buffered are still cleared).
+- bool Trim(int64_t max_offset);
++ bool Trim(int64_t _max_offset);
+
+ // The head and tail positions, in terms of the file's absolute offsets.
+ // tail() is an exclusive bound.
diff --git a/www/iridium/files/patch-media_formats_mp2t_es__parser__adts.cc b/www/iridium/files/patch-media_formats_mp2t_es__parser__adts.cc
new file mode 100644
index 000000000000..965a64bf93ae
--- /dev/null
+++ b/www/iridium/files/patch-media_formats_mp2t_es__parser__adts.cc
@@ -0,0 +1,26 @@
+--- media/formats/mp2t/es_parser_adts.cc.orig 2017-04-19 19:06:35 UTC
++++ media/formats/mp2t/es_parser_adts.cc
+@@ -60,11 +60,11 @@ bool EsParserAdts::LookForAdtsFrame(Adts
+ const uint8_t* es;
+ es_queue_->Peek(&es, &es_size);
+
+- int max_offset = es_size - kADTSHeaderMinSize;
+- if (max_offset <= 0)
++ int _max_offset = es_size - kADTSHeaderMinSize;
++ if (_max_offset <= 0)
+ return false;
+
+- for (int offset = 0; offset < max_offset; offset++) {
++ for (int offset = 0; offset < _max_offset; offset++) {
+ const uint8_t* cur_buf = &es[offset];
+ if (!isAdtsSyncWord(cur_buf))
+ continue;
+@@ -104,7 +104,7 @@ bool EsParserAdts::LookForAdtsFrame(Adts
+ return true;
+ }
+
+- es_queue_->Pop(max_offset);
++ es_queue_->Pop(_max_offset);
+ return false;
+ }
+
diff --git a/www/iridium/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc b/www/iridium/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
new file mode 100644
index 000000000000..8353d94cf59e
--- /dev/null
+++ b/www/iridium/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc
@@ -0,0 +1,26 @@
+--- media/formats/mp2t/es_parser_mpeg1audio.cc.orig 2017-04-19 19:06:35 UTC
++++ media/formats/mp2t/es_parser_mpeg1audio.cc
+@@ -109,11 +109,11 @@ bool EsParserMpeg1Audio::LookForMpeg1Aud
+ const uint8_t* es;
+ es_queue_->Peek(&es, &es_size);
+
+- int max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize;
+- if (max_offset <= 0)
++ int _max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize;
++ if (_max_offset <= 0)
+ return false;
+
+- for (int offset = 0; offset < max_offset; offset++) {
++ for (int offset = 0; offset < _max_offset; offset++) {
+ const uint8_t* cur_buf = &es[offset];
+ if (cur_buf[0] != 0xff)
+ continue;
+@@ -154,7 +154,7 @@ bool EsParserMpeg1Audio::LookForMpeg1Aud
+ return true;
+ }
+
+- es_queue_->Pop(max_offset);
++ es_queue_->Pop(_max_offset);
+ return false;
+ }
+
diff --git a/www/iridium/files/patch-mojo_BUILD.gn b/www/iridium/files/patch-mojo_BUILD.gn
new file mode 100644
index 000000000000..c89989fa0357
--- /dev/null
+++ b/www/iridium/files/patch-mojo_BUILD.gn
@@ -0,0 +1,11 @@
+--- mojo/BUILD.gn.orig 2017-04-19 19:06:35 UTC
++++ mojo/BUILD.gn
+@@ -12,7 +12,7 @@ group("mojo") {
+ "//mojo/common",
+ ]
+
+- if (!(is_linux && current_cpu == "x86")) {
++ if (!((is_linux || is_bsd) && current_cpu == "x86")) {
+ deps += [ "//mojo/public" ]
+ }
+
diff --git a/www/iridium/files/patch-mojo_edk_test_BUILD.gn b/www/iridium/files/patch-mojo_edk_test_BUILD.gn
new file mode 100644
index 000000000000..19e36a588772
--- /dev/null
+++ b/www/iridium/files/patch-mojo_edk_test_BUILD.gn
@@ -0,0 +1,20 @@
+--- mojo/edk/test/BUILD.gn.orig 2017-04-19 19:06:35 UTC
++++ mojo/edk/test/BUILD.gn
+@@ -46,7 +46,7 @@ source_set("run_all_unittests") {
+ "//testing/gtest",
+ ]
+
+- if (is_linux && !is_component_build) {
++ if ((is_linux || is_bsd) && !is_component_build) {
+ public_configs = [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
+ }
+ }
+@@ -66,7 +66,7 @@ source_set("run_all_perftests") {
+ "run_all_perftests.cc",
+ ]
+
+- if (is_linux && !is_component_build) {
++ if ((is_linux || is_bsd) && !is_component_build) {
+ public_configs = [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
+ }
+ }
diff --git a/www/iridium/files/patch-native__client__sdk_src_BUILD.gn b/www/iridium/files/patch-native__client__sdk_src_BUILD.gn
new file mode 100644
index 000000000000..6983b7f9dfae
--- /dev/null
+++ b/www/iridium/files/patch-native__client__sdk_src_BUILD.gn
@@ -0,0 +1,20 @@
+--- native_client_sdk/src/BUILD.gn.orig 2017-04-19 19:06:36 UTC
++++ native_client_sdk/src/BUILD.gn
+@@ -7,7 +7,7 @@ import("//build/config/features.gni")
+ declare_args() {
+ # Set to true if cross compiling trusted (e.g. building sel_ldr_arm on x86)
+ # binaries is supported.
+- enable_cross_trusted = is_linux
++ enable_cross_trusted = is_linux || is_bsd
+
+ # Build the nacl SDK untrusted components. This is disabled by default since
+ # not all NaCl untrusted compilers are in goma (e.g arm-nacl-glibc)
+@@ -28,7 +28,7 @@ if (enable_nacl) {
+ "//native_client/src/trusted/service_runtime:sel_ldr",
+ "//native_client/src/trusted/validator/driver:ncval_new",
+ ]
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ deps += [ "//native_client/src/nonsfi/loader:nonsfi_loader" ]
+ }
+ }
diff --git a/www/iridium/files/patch-net_BUILD.gn b/www/iridium/files/patch-net_BUILD.gn
new file mode 100644
index 000000000000..15c93a387568
--- /dev/null
+++ b/www/iridium/files/patch-net_BUILD.gn
@@ -0,0 +1,84 @@
+--- net/BUILD.gn.orig 2017-04-19 19:06:36 UTC
++++ net/BUILD.gn
+@@ -79,7 +79,7 @@ if (use_glib && use_gconf && !is_chromeo
+ net_configs += [ "//build/config/linux/gconf" ]
+ }
+
+-if (is_linux) {
++if (is_linux && !is_bsd) {
+ net_configs += [ "//build/config/linux:libresolv" ]
+ }
+
+@@ -1824,6 +1824,16 @@ component("net") {
+ sources -= [ "disk_cache/blockfile/file_posix.cc" ]
+ }
+
++ if (is_bsd) {
++ sources -= [
++ "base/address_tracker_linux.cc",
++ "base/address_tracker_linux.h",
++ "base/network_change_notifier_linux.cc",
++ "base/network_change_notifier_linux.h",
++ "base/network_interfaces_linux.cc",
++ ]
++ }
++
+ if (is_ios || is_mac) {
+ sources += [
+ "base/mac/url_conversions.h",
+@@ -2773,7 +2783,7 @@ if (!is_ios && !is_android) {
+ }
+ }
+
+-if (is_linux || is_mac) {
++if (is_linux || is_bsd || is_mac) {
+ executable("cachetool") {
+ testonly = true
+ sources = [
+@@ -2802,7 +2812,7 @@ if (is_linux || is_mac) {
+ }
+ }
+
+-if (is_linux) {
++if (is_linux || is_bsd) {
+ static_library("epoll_server") {
+ sources = [
+ "tools/epoll_server/epoll_server.cc",
+@@ -2906,7 +2916,7 @@ if (is_android) {
+ }
+ }
+
+-if (is_android || is_linux) {
++if (is_android || is_linux || is_bsd) {
+ executable("disk_cache_memory_test") {
+ testonly = true
+ sources = [
+@@ -4767,7 +4777,7 @@ test("net_unittests") {
+ "third_party/nist-pkits/",
+ ]
+
+- if (is_linux || is_mac || is_win) {
++ if (is_linux || is_bsd || is_mac || is_win) {
+ deps += [
+ "//third_party/pyftpdlib/",
+ "//third_party/pywebsocket/",
+@@ -4790,7 +4800,7 @@ test("net_unittests") {
+ if (is_desktop_linux) {
+ deps += [ ":epoll_quic_tools" ]
+ }
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [
+ "tools/quic/chlo_extractor_test.cc",
+ "tools/quic/end_to_end_test.cc",
+@@ -4852,6 +4862,10 @@ test("net_unittests") {
+ sources -= [ "proxy/proxy_config_service_linux_unittest.cc" ]
+ }
+
++ if (is_bsd) {
++ sources -= [ "base/address_tracker_linux_unittest.cc" ]
++ }
++
+ if (!is_proto_quic && v8_use_external_startup_data) {
+ deps += [ "//gin" ]
+ }
diff --git a/www/iridium/files/patch-net_base_address__tracker__linux.h b/www/iridium/files/patch-net_base_address__tracker__linux.h
new file mode 100644
index 000000000000..71a5be50858f
--- /dev/null
+++ b/www/iridium/files/patch-net_base_address__tracker__linux.h
@@ -0,0 +1,28 @@
+--- net/base/address_tracker_linux.h.orig 2017-04-19 19:06:36 UTC
++++ net/base/address_tracker_linux.h
+@@ -6,10 +6,12 @@
+ #define NET_BASE_ADDRESS_TRACKER_LINUX_H_
+
+ #include <sys/socket.h> // Needed to include netlink.
++#if !defined(__FreeBSD__)
+ // Mask superfluous definition of |struct net|. This is fixed in Linux 2.6.38.
+ #define net net_kernel
+ #include <linux/rtnetlink.h>
+ #undef net
++#endif
+ #include <stddef.h>
+
+ #include <map>
+@@ -34,8 +36,11 @@ namespace internal {
+ class NET_EXPORT_PRIVATE AddressTrackerLinux :
+ public base::MessageLoopForIO::Watcher {
+ public:
++#if !defined(__FreeBSD__)
+ typedef std::map<IPAddress, struct ifaddrmsg> AddressMap;
+-
++#else
++ typedef void* AddressMap;
++#endif
+ // Non-tracking version constructor: it takes a snapshot of the
+ // current system configuration. Once Init() returns, the
+ // configuration is available through GetOnlineLinks() and
diff --git a/www/iridium/files/patch-net_base_address__tracker__linux__unittest.cc b/www/iridium/files/patch-net_base_address__tracker__linux__unittest.cc
new file mode 100644
index 000000000000..fe4b502fd1f0
--- /dev/null
+++ b/www/iridium/files/patch-net_base_address__tracker__linux__unittest.cc
@@ -0,0 +1,14 @@
+--- net/base/address_tracker_linux_unittest.cc.orig 2017-04-19 19:06:36 UTC
++++ net/base/address_tracker_linux_unittest.cc
+@@ -4,7 +4,11 @@
+
+ #include "net/base/address_tracker_linux.h"
+
++#if defined(__linux__)
+ #include <linux/if.h>
++#else
++#include <net/if.h>
++#endif
+
+ #include <memory>
+ #include <unordered_set>
diff --git a/www/iridium/files/patch-net_base_mime__util__unittest.cc b/www/iridium/files/patch-net_base_mime__util__unittest.cc
new file mode 100644
index 000000000000..83c743babaca
--- /dev/null
+++ b/www/iridium/files/patch-net_base_mime__util__unittest.cc
@@ -0,0 +1,11 @@
+--- net/base/mime_util_unittest.cc.orig 2017-04-19 19:06:36 UTC
++++ net/base/mime_util_unittest.cc
+@@ -250,7 +250,7 @@ TEST(MimeUtilTest, TestGetExtensionsForM
+ {"message/", 0, NULL, true},
+ {"image/bmp", 1, "bmp"},
+ {"video/*", 6, "mp4"},
+-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_IOS)
++#if (defined(OS_POSIX) && !defined(OS_MACOSX)) || defined(OS_IOS)
+ {"video/*", 6, "mpg"},
+ #else
+ {"video/*", 6, "mpeg"},
diff --git a/www/iridium/files/patch-net_base_network__change__notifier.cc b/www/iridium/files/patch-net_base_network__change__notifier.cc
new file mode 100644
index 000000000000..9f6c055c9ac8
--- /dev/null
+++ b/www/iridium/files/patch-net_base_network__change__notifier.cc
@@ -0,0 +1,10 @@
+--- net/base/network_change_notifier.cc.orig 2017-04-19 19:06:36 UTC
++++ net/base/network_change_notifier.cc
+@@ -533,7 +533,6 @@ NetworkChangeNotifier* NetworkChangeNoti
+ #elif defined(OS_MACOSX)
+ return new NetworkChangeNotifierMac();
+ #else
+- NOTIMPLEMENTED();
+ return NULL;
+ #endif
+ }
diff --git a/www/iridium/files/patch-net_base_network__interfaces__posix.cc b/www/iridium/files/patch-net_base_network__interfaces__posix.cc
new file mode 100644
index 000000000000..9687f1b88718
--- /dev/null
+++ b/www/iridium/files/patch-net_base_network__interfaces__posix.cc
@@ -0,0 +1,20 @@
+--- net/base/network_interfaces_posix.cc.orig 2017-04-19 19:06:36 UTC
++++ net/base/network_interfaces_posix.cc
+@@ -9,7 +9,7 @@
+ #include <memory>
+ #include <set>
+
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ #include "net/base/network_interfaces_posix.h"
+ #include <net/if.h>
+ #include <netinet/in.h>
+@@ -17,7 +17,7 @@
+
+ namespace net {
+
+-#if !defined(OS_NACL)
++#if !defined(OS_NACL) && !defined(OS_BSD)
+ namespace internal {
+
+ // The application layer can pass |policy| defined in net_util.h to
diff --git a/www/iridium/files/patch-net_disk__cache_blockfile_disk__format.h b/www/iridium/files/patch-net_disk__cache_blockfile_disk__format.h
new file mode 100644
index 000000000000..03ee840f2fdd
--- /dev/null
+++ b/www/iridium/files/patch-net_disk__cache_blockfile_disk__format.h
@@ -0,0 +1,12 @@
+--- net/disk_cache/blockfile/disk_format.h.orig 2017-04-19 19:06:36 UTC
++++ net/disk_cache/blockfile/disk_format.h
+@@ -149,7 +149,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/iridium/files/patch-net_dns_address__sorter__posix.cc b/www/iridium/files/patch-net_dns_address__sorter__posix.cc
new file mode 100644
index 000000000000..6e408eb2d677
--- /dev/null
+++ b/www/iridium/files/patch-net_dns_address__sorter__posix.cc
@@ -0,0 +1,10 @@
+--- net/dns/address_sorter_posix.cc.orig 2017-04-19 19:06:36 UTC
++++ net/dns/address_sorter_posix.cc
+@@ -13,6 +13,7 @@
+ #include <sys/socket.h> // Must be included before ifaddrs.h.
+ #include <ifaddrs.h>
+ #include <net/if.h>
++#include <net/if_var.h>
+ #include <netinet/in_var.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
diff --git a/www/iridium/files/patch-net_dns_dns__config__service__posix__unittest.cc b/www/iridium/files/patch-net_dns_dns__config__service__posix__unittest.cc
new file mode 100644
index 000000000000..55f51146ef6a
--- /dev/null
+++ b/www/iridium/files/patch-net_dns_dns__config__service__posix__unittest.cc
@@ -0,0 +1,11 @@
+--- net/dns/dns_config_service_posix_unittest.cc.orig 2017-04-19 19:06:36 UTC
++++ net/dns/dns_config_service_posix_unittest.cc
+@@ -2,8 +2,6 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+
+-#include <resolv.h>
+-
+ #include <memory>
+
+ #include "base/cancelable_callback.h"
diff --git a/www/iridium/files/patch-net_dns_dns__reloader.cc b/www/iridium/files/patch-net_dns_dns__reloader.cc
new file mode 100644
index 000000000000..8ca6af244783
--- /dev/null
+++ b/www/iridium/files/patch-net_dns_dns__reloader.cc
@@ -0,0 +1,13 @@
+--- net/dns/dns_reloader.cc.orig 2017-04-19 19:06:36 UTC
++++ net/dns/dns_reloader.cc
+@@ -7,6 +7,10 @@
+ #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
+ !defined(OS_ANDROID)
+
++#if defined(OS_FREEBSD)
++#include <netinet/in.h>
++#endif
++
+ #include <resolv.h>
+
+ #include "base/lazy_instance.h"
diff --git a/www/iridium/files/patch-net_dns_dns__util.cc b/www/iridium/files/patch-net_dns_dns__util.cc
new file mode 100644
index 000000000000..cc263cb10c21
--- /dev/null
+++ b/www/iridium/files/patch-net_dns_dns__util.cc
@@ -0,0 +1,11 @@
+--- net/dns/dns_util.cc.orig 2017-04-19 19:06:36 UTC
++++ net/dns/dns_util.cc
+@@ -15,6 +15,8 @@
+ #include "build/build_config.h"
+ #include "net/base/address_list.h"
+
++#include <sys/socket.h>
++
+ #if defined(OS_POSIX)
+ #include <netinet/in.h>
+ #if !defined(OS_NACL)
diff --git a/www/iridium/files/patch-net_dns_host__resolver__proc.cc b/www/iridium/files/patch-net_dns_host__resolver__proc.cc
new file mode 100644
index 000000000000..25a38246ed64
--- /dev/null
+++ b/www/iridium/files/patch-net_dns_host__resolver__proc.cc
@@ -0,0 +1,11 @@
+--- net/dns/host_resolver_proc.cc.orig 2017-04-19 19:06:36 UTC
++++ net/dns/host_resolver_proc.cc
+@@ -194,7 +194,7 @@ int SystemHostResolverCall(const std::st
+ hints.ai_socktype = SOCK_STREAM;
+
+ #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
+- !defined(OS_ANDROID)
++ !defined(OS_ANDROID) && !defined(OS_FREEBSD)
+ DnsReloaderMaybeReload();
+ #endif
+ int err = getaddrinfo(host.c_str(), NULL, &hints, &ai);
diff --git a/www/iridium/files/patch-net_http_http__auth__gssapi__posix.cc b/www/iridium/files/patch-net_http_http__auth__gssapi__posix.cc
new file mode 100644
index 000000000000..09bb69fb155d
--- /dev/null
+++ b/www/iridium/files/patch-net_http_http__auth__gssapi__posix.cc
@@ -0,0 +1,13 @@
+--- net/http/http_auth_gssapi_posix.cc.orig 2017-04-19 19:06:36 UTC
++++ net/http/http_auth_gssapi_posix.cc
+@@ -431,8 +431,8 @@ base::NativeLibrary GSSAPISharedLibrary:
+ static const char* const kDefaultLibraryNames[] = {
+ #if defined(OS_MACOSX)
+ "/System/Library/Frameworks/GSS.framework/GSS"
+-#elif defined(OS_OPENBSD)
+- "libgssapi.so" // Heimdal - OpenBSD
++#elif defined(OS_BSD)
++ "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/iridium/files/patch-net_http_http__network__session.cc b/www/iridium/files/patch-net_http_http__network__session.cc
new file mode 100644
index 000000000000..c915a54ccfc1
--- /dev/null
+++ b/www/iridium/files/patch-net_http_http__network__session.cc
@@ -0,0 +1,12 @@
+--- net/http/http_network_session.cc.orig 2017-04-19 19:06:36 UTC
++++ net/http/http_network_session.cc
+@@ -23,7 +23,9 @@
+ #include "base/trace_event/process_memory_dump.h"
+ #include "base/values.h"
+ #include "net/base/network_throttle_manager_impl.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_impl.h"
+ #include "net/http/url_security_manager.h"
diff --git a/www/iridium/files/patch-net_proxy_proxy__config__service__linux.cc b/www/iridium/files/patch-net_proxy_proxy__config__service__linux.cc
new file mode 100644
index 000000000000..1e7563581150
--- /dev/null
+++ b/www/iridium/files/patch-net_proxy_proxy__config__service__linux.cc
@@ -0,0 +1,145 @@
+--- net/proxy/proxy_config_service_linux.cc.orig 2017-04-19 19:06:36 UTC
++++ net/proxy/proxy_config_service_linux.cc
+@@ -11,7 +11,14 @@
+ #include <limits.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#if defined(OS_FREEBSD)
++#include <fcntl.h>
++#include <sys/types.h>
++#include <sys/event.h>
++#include <sys/time.h>
++#else
+ #include <sys/inotify.h>
++#endif
+ #include <unistd.h>
+
+ #include <map>
+@@ -863,6 +870,7 @@ class SettingGetterImplKDE : public Prox
+ public:
+ explicit SettingGetterImplKDE(base::Environment* env_var_getter)
+ : inotify_fd_(-1),
++ config_fd_(-1),
+ inotify_watcher_(FROM_HERE),
+ notify_delegate_(nullptr),
+ debounce_timer_(new base::OneShotTimer()),
+@@ -938,9 +946,10 @@ class SettingGetterImplKDE : public Prox
+ // and pending tasks may then be deleted without being run.
+ // Here in the KDE version, we can safely close the file descriptor
+ // anyway. (Not that it really matters; the process is exiting.)
+- if (inotify_fd_ >= 0)
++ if (inotify_fd_ >= 0 || config_fd_ >= 0)
+ ShutDown();
+ DCHECK_LT(inotify_fd_, 0);
++ DCHECK_LT(config_fd_, 0);
+ }
+
+ bool Init(const scoped_refptr<base::SingleThreadTaskRunner>& glib_task_runner,
+@@ -949,9 +958,17 @@ class SettingGetterImplKDE : public Prox
+ // This has to be called on the UI thread (http://crbug.com/69057).
+ base::ThreadRestrictions::ScopedAllowIO allow_io;
+ DCHECK_LT(inotify_fd_, 0);
++#if defined(OS_BSD)
++ inotify_fd_ = kqueue();
++#else
+ inotify_fd_ = inotify_init();
++#endif
+ if (inotify_fd_ < 0) {
++#if defined(OS_BSD)
++ PLOG(ERROR) << "kqueue failed";
++#else
+ PLOG(ERROR) << "inotify_init failed";
++#endif
+ return false;
+ }
+ if (!base::SetNonBlocking(inotify_fd_)) {
+@@ -975,22 +992,40 @@ class SettingGetterImplKDE : public Prox
+ close(inotify_fd_);
+ inotify_fd_ = -1;
+ }
++ if (config_fd_ >= 0) {
++ close(config_fd_);
++ config_fd_ = -1;
++ }
+ debounce_timer_.reset();
+ }
+
+ bool SetUpNotifications(
+ ProxyConfigServiceLinux::Delegate* delegate) override {
+ DCHECK_GE(inotify_fd_, 0);
++ DCHECK_GE(config_fd_, 0);
+ DCHECK(file_task_runner_->BelongsToCurrentThread());
+ // We can't just watch the kioslaverc file directly, since KDE will write
+ // a new copy of it and then rename it whenever settings are changed and
+ // inotify watches inodes (so we'll be watching the old deleted file after
+ // the first change, and it will never change again). So, we watch the
+ // directory instead. We then act only on changes to the kioslaverc entry.
++#if defined(OS_BSD)
++ config_fd_ = HANDLE_EINTR(open(kde_config_dir_.value().c_str(), O_RDONLY));
++
++ if (config_fd_ == -1)
++ return false;
++
++ struct kevent ev;
++ EV_SET(&ev, config_fd_, EVFILT_VNODE, EV_ADD | EV_CLEAR, NOTE_WRITE,
++ 0, NULL);
++ if (kevent(inotify_fd_, &ev, 1, NULL, 0, NULL) == -1)
++ return false;
++#else
+ if (inotify_add_watch(inotify_fd_, kde_config_dir_.value().c_str(),
+ IN_MODIFY | IN_MOVED_TO) < 0) {
+ return false;
+ }
++#endif
+ notify_delegate_ = delegate;
+ if (!base::MessageLoopForIO::current()->WatchFileDescriptor(
+ inotify_fd_, true, base::MessageLoopForIO::WATCH_READ,
+@@ -1011,7 +1046,19 @@ class SettingGetterImplKDE : public Prox
+ void OnFileCanReadWithoutBlocking(int fd) override {
+ DCHECK_EQ(fd, inotify_fd_);
+ DCHECK(file_task_runner_->BelongsToCurrentThread());
++#if defined(OS_BSD)
++ struct kevent ev;
++ int rv = kevent(inotify_fd_, NULL, 0, &ev, 1, NULL);
++
++ if (rv != -1 && (ev.flags & EV_ERROR) == 0) {
++ OnChangeNotification();
++ } else {
++ LOG(ERROR) << "kevent() failure; no longer watching kioslaverc!";
++ ShutDown();
++ }
++#else
+ OnChangeNotification();
++#endif
+ }
+ void OnFileCanWriteWithoutBlocking(int fd) override { NOTREACHED(); }
+
+@@ -1284,8 +1331,11 @@ class SettingGetterImplKDE : public Prox
+ void OnChangeNotification() {
+ DCHECK_GE(inotify_fd_, 0);
+ DCHECK(file_task_runner_->BelongsToCurrentThread());
+- char event_buf[(sizeof(inotify_event) + NAME_MAX + 1) * 4];
+ bool kioslaverc_touched = false;
++#if defined(OS_BSD)
++ kioslaverc_touched = true;
++#else
++ char event_buf[(sizeof(inotify_event) + NAME_MAX + 1) * 4];
+ ssize_t r;
+ while ((r = read(inotify_fd_, event_buf, sizeof(event_buf))) > 0) {
+ // inotify returns variable-length structures, which is why we have
+@@ -1322,6 +1372,7 @@ class SettingGetterImplKDE : public Prox
+ inotify_fd_ = -1;
+ }
+ }
++#endif
+ if (kioslaverc_touched) {
+ // We don't use Reset() because the timer may not yet be running.
+ // (In that case Stop() is a no-op.)
+@@ -1337,6 +1388,7 @@ class SettingGetterImplKDE : public Prox
+ std::vector<std::string> > strings_map_type;
+
+ int inotify_fd_;
++ int config_fd_;
+ base::MessagePumpLibevent::FileDescriptorWatcher inotify_watcher_;
+ ProxyConfigServiceLinux::Delegate* notify_delegate_;
+ std::unique_ptr<base::OneShotTimer> debounce_timer_;
diff --git a/www/iridium/files/patch-net_proxy_proxy__service.cc b/www/iridium/files/patch-net_proxy_proxy__service.cc
new file mode 100644
index 000000000000..759c79eb9d03
--- /dev/null
+++ b/www/iridium/files/patch-net_proxy_proxy__service.cc
@@ -0,0 +1,20 @@
+--- net/proxy/proxy_service.cc.orig 2017-04-19 19:06:36 UTC
++++ net/proxy/proxy_service.cc
+@@ -49,7 +49,7 @@
+ #elif defined(OS_MACOSX)
+ #include "net/proxy/proxy_config_service_mac.h"
+ #include "net/proxy/proxy_resolver_mac.h"
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ #include "net/proxy/proxy_config_service_linux.h"
+ #elif defined(OS_ANDROID)
+ #include "net/proxy/proxy_config_service_android.h"
+@@ -1520,7 +1520,7 @@ ProxyService::CreateSystemProxyConfigSer
+ << "profile_io_data.cc::CreateProxyConfigService and this should "
+ << "be used only for examples.";
+ return base::WrapUnique(new UnsetProxyConfigService);
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ std::unique_ptr<ProxyConfigServiceLinux> linux_config_service(
+ new ProxyConfigServiceLinux());
+
diff --git a/www/iridium/files/patch-net_quic_platform_impl_quic__ip__address__impl.cc b/www/iridium/files/patch-net_quic_platform_impl_quic__ip__address__impl.cc
new file mode 100644
index 000000000000..9b12538e39e4
--- /dev/null
+++ b/www/iridium/files/patch-net_quic_platform_impl_quic__ip__address__impl.cc
@@ -0,0 +1,10 @@
+--- net/quic/platform/impl/quic_ip_address_impl.cc.orig 2017-04-19 19:06:36 UTC
++++ net/quic/platform/impl/quic_ip_address_impl.cc
+@@ -12,6 +12,7 @@
+ #include <ws2bth.h>
+ #elif defined(OS_POSIX)
+ #include <netinet/in.h>
++#include <sys/socket.h>
+ #endif
+
+ using std::string;
diff --git a/www/iridium/files/patch-net_socket_socks5__client__socket.cc b/www/iridium/files/patch-net_socket_socks5__client__socket.cc
new file mode 100644
index 000000000000..10a9e526cde4
--- /dev/null
+++ b/www/iridium/files/patch-net_socket_socks5__client__socket.cc
@@ -0,0 +1,13 @@
+--- net/socket/socks5_client_socket.cc.orig 2017-04-19 19:06:36 UTC
++++ net/socket/socks5_client_socket.cc
+@@ -4,6 +4,10 @@
+
+ #include "net/socket/socks5_client_socket.h"
+
++#if defined(OS_BSD)
++#include <netinet/in.h>
++#endif
++
+ #include <utility>
+
+ #include "base/callback_helpers.h"
diff --git a/www/iridium/files/patch-net_socket_udp__socket__posix.cc b/www/iridium/files/patch-net_socket_udp__socket__posix.cc
new file mode 100644
index 000000000000..2303db9bd7d0
--- /dev/null
+++ b/www/iridium/files/patch-net_socket_udp__socket__posix.cc
@@ -0,0 +1,29 @@
+--- net/socket/udp_socket_posix.cc.orig 2017-04-19 19:06:36 UTC
++++ net/socket/udp_socket_posix.cc
+@@ -59,7 +59,7 @@ const int kBindRetries = 10;
+ const int kPortStart = 1024;
+ const int kPortEnd = 65535;
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+
+ // Returns IPv4 address in network order.
+ int GetIPv4AddressFromIndex(int socket, uint32_t index, uint32_t* address) {
+@@ -765,7 +765,7 @@ int UDPSocketPosix::SetMulticastOptions(
+ if (multicast_interface_ != 0) {
+ switch (addr_family_) {
+ case AF_INET: {
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ ip_mreqn mreq;
+ mreq.imr_ifindex = multicast_interface_;
+ mreq.imr_address.s_addr = htonl(INADDR_ANY);
+@@ -840,7 +840,7 @@ int UDPSocketPosix::JoinGroup(const IPAd
+ if (addr_family_ != AF_INET)
+ return ERR_ADDRESS_INVALID;
+
+-#if !defined(OS_MACOSX)
++#if !defined(OS_MACOSX) && !defined(OS_BSD)
+ ip_mreqn mreq;
+ mreq.imr_ifindex = multicast_interface_;
+ mreq.imr_address.s_addr = htonl(INADDR_ANY);
diff --git a/www/iridium/files/patch-net_tools_cert__verify__tool_verify__using__path__builder.cc b/www/iridium/files/patch-net_tools_cert__verify__tool_verify__using__path__builder.cc
new file mode 100644
index 000000000000..b2238dc7df8e
--- /dev/null
+++ b/www/iridium/files/patch-net_tools_cert__verify__tool_verify__using__path__builder.cc
@@ -0,0 +1,20 @@
+--- net/tools/cert_verify_tool/verify_using_path_builder.cc.orig 2017-04-19 19:06:36 UTC
++++ net/tools/cert_verify_tool/verify_using_path_builder.cc
+@@ -34,7 +34,7 @@
+ #include "net/cert/internal/trust_store_nss.h"
+ #endif
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "net/proxy/proxy_config.h"
+ #include "net/proxy/proxy_config_service_fixed.h"
+ #endif
+@@ -185,7 +185,7 @@ void SetUpOnNetworkThread(std::unique_pt
+ // (similar to VERIFY_CERT_IO_ENABLED flag for CertVerifyProc).
+ net::URLRequestContextBuilder url_request_context_builder;
+ url_request_context_builder.set_user_agent(GetUserAgent());
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ //
diff --git a/www/iridium/files/patch-net_tools_get__server__time_get__server__time.cc b/www/iridium/files/patch-net_tools_get__server__time_get__server__time.cc
new file mode 100644
index 000000000000..05475764b7d2
--- /dev/null
+++ b/www/iridium/files/patch-net_tools_get__server__time_get__server__time.cc
@@ -0,0 +1,20 @@
+--- net/tools/get_server_time/get_server_time.cc.orig 2017-04-19 19:06:36 UTC
++++ net/tools/get_server_time/get_server_time.cc
+@@ -46,7 +46,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "base/mac/scoped_nsautorelease_pool.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "net/proxy/proxy_config.h"
+ #include "net/proxy/proxy_config_service_fixed.h"
+ #endif
+@@ -142,7 +142,7 @@ class PrintingLogObserver : public net::
+ std::unique_ptr<net::URLRequestContext> BuildURLRequestContext(
+ net::NetLog* net_log) {
+ net::URLRequestContextBuilder builder;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, use a fixed ProxyConfigService, since the default one
+ // depends on glib.
+ //
diff --git a/www/iridium/files/patch-net_url__request_url__request__context__builder.cc b/www/iridium/files/patch-net_url__request_url__request__context__builder.cc
new file mode 100644
index 000000000000..b4bdf079d4db
--- /dev/null
+++ b/www/iridium/files/patch-net_url__request_url__request__context__builder.cc
@@ -0,0 +1,11 @@
+--- net/url_request/url_request_context_builder.cc.orig 2017-04-19 19:06:36 UTC
++++ net/url_request/url_request_context_builder.cc
+@@ -327,7 +327,7 @@ std::unique_ptr<URLRequestContext> URLRe
+ if (!proxy_service_) {
+ // TODO(willchan): Switch to using this code when
+ // ProxyService::CreateSystemProxyConfigService()'s signature doesn't suck.
+-#if !defined(OS_LINUX) && !defined(OS_ANDROID)
++#if !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_BSD)
+ if (!proxy_config_service_) {
+ proxy_config_service_ = ProxyService::CreateSystemProxyConfigService(
+ base::ThreadTaskRunnerHandle::Get().get(),
diff --git a/www/iridium/files/patch-pdf_pdfium_pdfium__engine.cc b/www/iridium/files/patch-pdf_pdfium_pdfium__engine.cc
new file mode 100644
index 000000000000..e2376dbb721c
--- /dev/null
+++ b/www/iridium/files/patch-pdf_pdfium_pdfium__engine.cc
@@ -0,0 +1,65 @@
+--- pdf/pdfium/pdfium_engine.cc.orig 2017-04-19 19:06:36 UTC
++++ pdf/pdfium/pdfium_engine.cc
+@@ -129,7 +129,7 @@ std::vector<uint32_t> GetPageNumbersFrom
+ return page_numbers;
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+
+ PP_Instance g_last_instance_id;
+
+@@ -642,7 +642,7 @@ bool InitializeSDK() {
+ config.m_v8EmbedderSlot = gin::kEmbedderPDFium;
+ FPDF_InitLibraryWithConfig(&config);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Font loading doesn't work in the renderer sandbox in Linux.
+ FPDF_SetSystemFontInfo(&g_font_info);
+ #else
+@@ -667,7 +667,7 @@ bool InitializeSDK() {
+
+ void ShutdownSDK() {
+ FPDF_DestroyLibrary();
+-#if !defined(OS_LINUX)
++#if !defined(OS_LINUX) && !defined(OS_BSD)
+ delete g_font_info;
+ #endif
+ TearDownV8();
+@@ -772,7 +772,7 @@ PDFiumEngine::PDFiumEngine(PDFEngine::Cl
+ IFSDK_PAUSE::user = nullptr;
+ IFSDK_PAUSE::NeedToPauseNow = Pause_NeedToPauseNow;
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // PreviewModeClient does not know its pp::Instance.
+ pp::Instance* instance = client_->GetPluginInstance();
+ if (instance)
+@@ -1513,7 +1513,7 @@ pp::Buffer_Dev PDFiumEngine::PrintPagesA
+ FPDF_ClosePage(pdf_page);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ g_last_instance_id = client_->GetPluginInstance()->pp_instance();
+ #endif
+
+@@ -2950,7 +2950,7 @@ bool PDFiumEngine::ContinuePaint(int pro
+ DCHECK_LT(static_cast<size_t>(progressive_index), progressive_paints_.size());
+ DCHECK(image_data);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ g_last_instance_id = client_->GetPluginInstance()->pp_instance();
+ #endif
+
+@@ -3408,7 +3408,7 @@ void PDFiumEngine::SetCurrentPage(int in
+ FORM_DoPageAAction(old_page, form_, FPDFPAGE_AACTION_CLOSE);
+ }
+ most_visible_page_ = index;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ g_last_instance_id = client_->GetPluginInstance()->pp_instance();
+ #endif
+ if (most_visible_page_ != -1 && called_do_document_action_) {
diff --git a/www/iridium/files/patch-ppapi_proxy_file__io__resource.cc b/www/iridium/files/patch-ppapi_proxy_file__io__resource.cc
new file mode 100644
index 000000000000..3ef9398d2555
--- /dev/null
+++ b/www/iridium/files/patch-ppapi_proxy_file__io__resource.cc
@@ -0,0 +1,48 @@
+--- ppapi/proxy/file_io_resource.cc.orig 2017-04-19 19:06:36 UTC
++++ ppapi/proxy/file_io_resource.cc
+@@ -285,17 +285,19 @@ int32_t FileIOResource::Write(int64_t of
+
+ if (check_quota_) {
+ int64_t increase = 0;
+- uint64_t max_offset = 0;
++ uint64_t _max_offset = 0;
++ // (rene) avoid name collission with /usr/include/vm/vm_map.h on FreeBSD
++ // which also defines max_offset
+ bool append = (open_flags_ & PP_FILEOPENFLAG_APPEND) != 0;
+ if (append) {
+ increase = bytes_to_write;
+ } else {
+- uint64_t max_offset = offset + bytes_to_write;
+- if (max_offset >
++ uint64_t _max_offset = offset + bytes_to_write;
++ if (_max_offset >
+ static_cast<uint64_t>(std::numeric_limits<int64_t>::max())) {
+ return PP_ERROR_FAILED; // amount calculation would overflow.
+ }
+- increase = static_cast<int64_t>(max_offset) - max_written_offset_;
++ increase = static_cast<int64_t>(_max_offset) - max_written_offset_;
+ }
+
+ if (increase > 0) {
+@@ -319,7 +321,7 @@ int32_t FileIOResource::Write(int64_t of
+ if (append)
+ append_mode_write_amount_ += bytes_to_write;
+ else
+- max_written_offset_ = max_offset;
++ max_written_offset_ = _max_offset;
+ }
+ }
+ return WriteValidated(offset, buffer, bytes_to_write, callback);
+@@ -597,9 +599,9 @@ void FileIOResource::OnRequestWriteQuota
+ } else {
+ DCHECK_LE(offset + bytes_to_write - max_written_offset_, granted);
+
+- int64_t max_offset = offset + bytes_to_write;
+- if (max_written_offset_ < max_offset)
+- max_written_offset_ = max_offset;
++ int64_t _max_offset = offset + bytes_to_write;
++ if (max_written_offset_ < _max_offset)
++ max_written_offset_ = _max_offset;
+ }
+
+ if (callback->is_blocking()) {
diff --git a/www/iridium/files/patch-ppapi_shared__impl_private_net__address__private__impl.cc b/www/iridium/files/patch-ppapi_shared__impl_private_net__address__private__impl.cc
new file mode 100644
index 000000000000..ba76213e36b1
--- /dev/null
+++ b/www/iridium/files/patch-ppapi_shared__impl_private_net__address__private__impl.cc
@@ -0,0 +1,16 @@
+--- ppapi/shared_impl/private/net_address_private_impl.cc.orig 2017-04-19 19:06:36 UTC
++++ ppapi/shared_impl/private/net_address_private_impl.cc
+@@ -26,9 +26,12 @@
+ #include <arpa/inet.h>
+ #include <sys/socket.h>
+ #include <sys/types.h>
++#if defined(OS_BSD)
++#include <netinet/in.h>
++#endif
+ #endif
+
+-#if defined(OS_MACOSX)
++#if defined(OS_MACOSX) || defined(OS_BSD)
+ // This is a bit evil, but it's standard operating procedure for |s6_addr|....
+ #define s6_addr16 __u6_addr.__u6_addr16
+ #endif
diff --git a/www/iridium/files/patch-ppapi_tests_extensions_BUILD.gn b/www/iridium/files/patch-ppapi_tests_extensions_BUILD.gn
new file mode 100644
index 000000000000..78bd36de1632
--- /dev/null
+++ b/www/iridium/files/patch-ppapi_tests_extensions_BUILD.gn
@@ -0,0 +1,11 @@
+--- ppapi/tests/extensions/BUILD.gn.orig 2017-04-19 19:06:36 UTC
++++ ppapi/tests/extensions/BUILD.gn
+@@ -20,7 +20,7 @@ group("extensions") {
+ ":ppapi_tests_extensions_popup($newlib)",
+ ":ppapi_tests_extensions_socket_permissions($newlib)",
+ ]
+- if ((target_cpu == "x86" || target_cpu == "x64") && is_linux &&
++ if ((target_cpu == "x86" || target_cpu == "x64") && (is_linux || is_bsd) &&
+ enable_nacl_nonsfi) {
+ nonsfi = "//build/toolchain/nacl:newlib_pnacl_nonsfi"
+ data_deps += [ ":ppapi_tests_extensions_packaged_app($nonsfi)" ]
diff --git a/www/iridium/files/patch-printing_BUILD.gn b/www/iridium/files/patch-printing_BUILD.gn
new file mode 100644
index 000000000000..a9c4ad77952c
--- /dev/null
+++ b/www/iridium/files/patch-printing_BUILD.gn
@@ -0,0 +1,20 @@
+--- printing/BUILD.gn.orig 2017-04-19 19:06:36 UTC
++++ printing/BUILD.gn
+@@ -138,7 +138,7 @@ component("printing") {
+ if (use_cups) {
+ configs += [ ":cups" ]
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ # rebase_path does not accept an empty string
+ if (use_sysroot) {
+ cups_sysroot = rebase_path(sysroot)
+@@ -215,7 +215,7 @@ component("printing") {
+ "printing_context_no_system_dialog.cc",
+ "printing_context_no_system_dialog.h",
+ ]
+- } else if (is_linux) { # Non-ChromeOS Linux.
++ } else if (is_linux || is_bsd) { # Non-ChromeOS Linux/BSD.
+ sources += [
+ "printed_document_linux.cc",
+ "printing_context_linux.cc",
diff --git a/www/iridium/files/patch-printing_cups__config__helper.py b/www/iridium/files/patch-printing_cups__config__helper.py
new file mode 100644
index 000000000000..8b2dbc9b4b08
--- /dev/null
+++ b/www/iridium/files/patch-printing_cups__config__helper.py
@@ -0,0 +1,11 @@
+--- printing/cups_config_helper.py.orig 2017-04-19 19:06:36 UTC
++++ printing/cups_config_helper.py
+@@ -65,7 +65,7 @@ def main():
+ mode = sys.argv[1]
+ if len(sys.argv) > 2 and sys.argv[2]:
+ sysroot = sys.argv[2]
+- cups_config = os.path.join(sysroot, 'usr', 'bin', 'cups-config')
++ cups_config = os.path.join(sysroot, 'bin', 'cups-config')
+ if not os.path.exists(cups_config):
+ print 'cups-config not found: %s' % cups_config
+ return 1
diff --git a/www/iridium/files/patch-remoting_host_BUILD.gn b/www/iridium/files/patch-remoting_host_BUILD.gn
new file mode 100644
index 000000000000..04652d6d4561
--- /dev/null
+++ b/www/iridium/files/patch-remoting_host_BUILD.gn
@@ -0,0 +1,47 @@
+--- remoting/host/BUILD.gn.orig 2017-04-19 19:06:36 UTC
++++ remoting/host/BUILD.gn
+@@ -326,7 +326,7 @@ static_library("host") {
+ deps += [ "//components/policy:generated" ]
+ }
+
+- if (is_linux && !is_chromeos) {
++ if ((is_linux || is_bsd) && !is_chromeos) {
+ libs += [ "pam" ]
+ }
+
+@@ -345,7 +345,7 @@ static_library("host") {
+ "input_injector_x11.cc",
+ "local_input_monitor_x11.cc",
+ ]
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ # These will already be filtered out on non-Linux.
+ sources -= [
+ "linux/unicode_to_keysym.cc",
+@@ -531,7 +531,7 @@ source_set("unit_tests") {
+ "touch_injector_win_unittest.cc",
+ ]
+
+- if (!use_x11 && is_linux) {
++ if (!use_x11 && (is_linux || is_bsd)) {
+ sources -= [ "linux/unicode_to_keysym_unittest.cc" ]
+ }
+ if (use_ozone || is_chromeos) {
+@@ -747,7 +747,7 @@ if (enable_me2me_host) {
+ if (is_desktop_linux) {
+ deps += [ "//build/config/linux/gtk" ]
+ }
+- if ((is_linux && !is_chromeos) || is_mac) {
++ if ((is_linux && !is_chromeos) || is_mac || is_bsd) {
+ libs = [ "pam" ]
+ }
+
+@@ -817,7 +817,7 @@ if (enable_me2me_host) {
+ }
+ }
+ }
+- if (is_chrome_branded && enable_me2me_host && is_linux && !is_chromeos) {
++ if (is_chrome_branded && enable_me2me_host && is_linux && is_bsd && !is_chromeos) {
+ group("remoting_me2me_host_archive") {
+ deps = [
+ "//remoting/host/installer/linux:remoting_me2me_host_archive",
diff --git a/www/iridium/files/patch-sandbox_features.gni b/www/iridium/files/patch-sandbox_features.gni
new file mode 100644
index 000000000000..37cebdfaf372
--- /dev/null
+++ b/www/iridium/files/patch-sandbox_features.gni
@@ -0,0 +1,10 @@
+--- sandbox/features.gni.orig 2017-04-19 19:06:37 UTC
++++ sandbox/features.gni
+@@ -11,6 +11,6 @@ import("//build/config/nacl/config.gni")
+ use_seccomp_bpf =
+ (is_linux || is_android) &&
+ (current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm" ||
+- current_cpu == "arm64" || current_cpu == "mipsel")
++ current_cpu == "arm64" || current_cpu == "mipsel") && !is_bsd
+
+ use_seccomp_bpf = use_seccomp_bpf || is_nacl_nonsfi
diff --git a/www/iridium/files/patch-sandbox_linux_BUILD.gn b/www/iridium/files/patch-sandbox_linux_BUILD.gn
new file mode 100644
index 000000000000..4073d740e794
--- /dev/null
+++ b/www/iridium/files/patch-sandbox_linux_BUILD.gn
@@ -0,0 +1,11 @@
+--- sandbox/linux/BUILD.gn.orig 2017-04-24 14:40:29 UTC
++++ sandbox/linux/BUILD.gn
+@@ -284,7 +284,7 @@ if (is_linux) {
+ # TODO fix this and re-enable this warning.
+ "-Wno-sign-compare",
+ ]
+- ldflags = [ "-pie", "-Wl,--no-keep-memory" ]
++ ldflags = [ "-pie" ]
+
+ import("//build/config/compiler/compiler.gni")
+ import("//build/config/sanitizers/sanitizers.gni")
diff --git a/www/iridium/files/patch-sdch_BUILD.gn b/www/iridium/files/patch-sdch_BUILD.gn
new file mode 100644
index 000000000000..330821b5431f
--- /dev/null
+++ b/www/iridium/files/patch-sdch_BUILD.gn
@@ -0,0 +1,20 @@
+--- sdch/BUILD.gn.orig 2017-04-19 19:06:37 UTC
++++ sdch/BUILD.gn
+@@ -11,7 +11,7 @@ config("sdch_config") {
+ # from a config and can't be on the target directly.
+ config("sdch_warnings") {
+ cflags = []
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ # TODO(mostynb): remove this if open-vcdiff is ever updated for c++11:
+ cflags += [ "-Wno-deprecated-declarations" ]
+ }
+@@ -59,7 +59,7 @@ static_library("sdch") {
+ "//third_party/zlib",
+ ]
+
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ include_dirs = [ "linux" ]
+ } else if (is_ios) {
+ include_dirs = [ "ios" ]
diff --git a/www/iridium/files/patch-services_catalog_public_cpp_manifest__parsing__util.cc b/www/iridium/files/patch-services_catalog_public_cpp_manifest__parsing__util.cc
new file mode 100644
index 000000000000..3603b479140f
--- /dev/null
+++ b/www/iridium/files/patch-services_catalog_public_cpp_manifest__parsing__util.cc
@@ -0,0 +1,21 @@
+--- services/catalog/public/cpp/manifest_parsing_util.cc.orig 2017-04-19 19:06:37 UTC
++++ services/catalog/public/cpp/manifest_parsing_util.cc
+@@ -15,7 +15,8 @@ bool IsValidPlatformName(const std::stri
+ return name == Store::kRequiredFilesKey_PlatformValue_Windows ||
+ name == Store::kRequiredFilesKey_PlatformValue_Linux ||
+ name == Store::kRequiredFilesKey_PlatformValue_MacOSX ||
+- name == Store::kRequiredFilesKey_PlatformValue_Android;
++ name == Store::kRequiredFilesKey_PlatformValue_Android ||
++ name == Store::kRequiredFilesKey_PlatformValue_FreeBSD;
+ }
+
+ bool IsCurrentPlatform(const std::string& name) {
+@@ -27,6 +28,8 @@ bool IsCurrentPlatform(const std::string
+ return name == Store::kRequiredFilesKey_PlatformValue_MacOSX;
+ #elif defined(OS_ANDROID)
+ return name == Store::kRequiredFilesKey_PlatformValue_Android;
++#elif defined(OS_BSD)
++ return name == Store::kRequiredFilesKey_PlatformValue_FreeBSD;
+ #else
+ #error This architecture is not supported.
+ #endif
diff --git a/www/iridium/files/patch-services_catalog_store.cc b/www/iridium/files/patch-services_catalog_store.cc
new file mode 100644
index 000000000000..04f61b3ae404
--- /dev/null
+++ b/www/iridium/files/patch-services_catalog_store.cc
@@ -0,0 +1,9 @@
+--- services/catalog/store.cc.orig 2017-04-19 19:06:37 UTC
++++ services/catalog/store.cc
+@@ -32,4 +32,6 @@ const char Store::kRequiredFilesKey_Plat
+ const char Store::kRequiredFilesKey_PlatformValue_MacOSX[] = "macosx";
+ // static
+ const char Store::kRequiredFilesKey_PlatformValue_Android[] = "android";
++// static
++const char Store::kRequiredFilesKey_PlatformValue_FreeBSD[] = "freebsd";
+ } // namespace catalog
diff --git a/www/iridium/files/patch-services_catalog_store.h b/www/iridium/files/patch-services_catalog_store.h
new file mode 100644
index 000000000000..4743990c18ef
--- /dev/null
+++ b/www/iridium/files/patch-services_catalog_store.h
@@ -0,0 +1,10 @@
+--- services/catalog/store.h.orig 2017-04-19 19:06:37 UTC
++++ services/catalog/store.h
+@@ -33,6 +33,7 @@ class Store {
+ static const char kRequiredFilesKey_PlatformValue_Linux[];
+ static const char kRequiredFilesKey_PlatformValue_MacOSX[];
+ static const char kRequiredFilesKey_PlatformValue_Android[];
++ static const char kRequiredFilesKey_PlatformValue_FreeBSD[];
+ };
+
+ } // namespace catalog
diff --git a/www/iridium/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc b/www/iridium/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc
new file mode 100644
index 000000000000..916132d19d36
--- /dev/null
+++ b/www/iridium/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc
@@ -0,0 +1,11 @@
+--- services/device/time_zone_monitor/time_zone_monitor.cc.orig 2017-04-19 19:06:37 UTC
++++ services/device/time_zone_monitor/time_zone_monitor.cc
+@@ -31,7 +31,7 @@ void TimeZoneMonitor::NotifyClients() {
+ std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::createDefault());
+ #else
+ icu::TimeZone* new_zone = icu::TimeZone::detectHostTimeZone();
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // We get here multiple times on Linux per a single tz change, but
+ // want to update the ICU default zone and notify renderer only once.
+ std::unique_ptr<icu::TimeZone> current_zone(icu::TimeZone::createDefault());
diff --git a/www/iridium/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc b/www/iridium/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
new file mode 100644
index 000000000000..f6e620f8e0a3
--- /dev/null
+++ b/www/iridium/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc
@@ -0,0 +1,22 @@
+--- services/device/time_zone_monitor/time_zone_monitor_linux.cc.orig 2017-04-19 19:06:37 UTC
++++ services/device/time_zone_monitor/time_zone_monitor_linux.cc
+@@ -59,6 +59,9 @@ class TimeZoneMonitorLinuxImpl
+ main_task_runner_(base::ThreadTaskRunnerHandle::Get()),
+ file_task_runner_(file_task_runner),
+ owner_(owner) {
++ }
++
++ void StartWatching() {
+ DCHECK(main_task_runner_->RunsTasksOnCurrentThread());
+ file_task_runner_->PostTask(
+ FROM_HERE,
+@@ -150,6 +153,9 @@ TimeZoneMonitorLinux::TimeZoneMonitorLin
+ // changed.
+ if (!getenv("TZ")) {
+ impl_ = new TimeZoneMonitorLinuxImpl(this, file_task_runner);
++ if (impl_.get()) {
++ impl_->StartWatching();
++ }
+ }
+ }
+
diff --git a/www/iridium/files/patch-services_service__manager_public_cpp_standalone__service_BUILD.gn b/www/iridium/files/patch-services_service__manager_public_cpp_standalone__service_BUILD.gn
new file mode 100644
index 000000000000..fbfb888daaad
--- /dev/null
+++ b/www/iridium/files/patch-services_service__manager_public_cpp_standalone__service_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/public/cpp/standalone_service/BUILD.gn.orig 2017-04-19 19:06:37 UTC
++++ services/service_manager/public/cpp/standalone_service/BUILD.gn
+@@ -23,7 +23,7 @@ source_set("standalone_service") {
+ "//services/service_manager/public/interfaces",
+ ]
+
+- if (is_linux && !is_android) {
++ if (is_linux && !is_android && !is_bsd) {
+ sources += [
+ "linux_sandbox.cc",
+ "linux_sandbox.h",
diff --git a/www/iridium/files/patch-services_service__manager_public_cpp_standalone__service_standalone__service.cc b/www/iridium/files/patch-services_service__manager_public_cpp_standalone__service_standalone__service.cc
new file mode 100644
index 000000000000..19d66e0fc96f
--- /dev/null
+++ b/www/iridium/files/patch-services_service__manager_public_cpp_standalone__service_standalone__service.cc
@@ -0,0 +1,11 @@
+--- services/service_manager/public/cpp/standalone_service/standalone_service.cc.orig 2017-04-19 19:06:37 UTC
++++ services/service_manager/public/cpp/standalone_service/standalone_service.cc
+@@ -70,6 +70,8 @@ void RunStandaloneService(const Standalo
+ *base::CommandLine::ForCurrentProcess();
+ if (command_line.HasSwitch(switches::kEnableSandbox))
+ sandbox = InitializeSandbox();
++#elif defined(OS_BSD)
++ NOTIMPLEMENTED();
+ #endif
+
+ mojo::edk::Init();
diff --git a/www/iridium/files/patch-services_service__manager_runner_host_BUILD.gn b/www/iridium/files/patch-services_service__manager_runner_host_BUILD.gn
new file mode 100644
index 000000000000..7048a84423e2
--- /dev/null
+++ b/www/iridium/files/patch-services_service__manager_runner_host_BUILD.gn
@@ -0,0 +1,11 @@
+--- services/service_manager/runner/host/BUILD.gn.orig 2017-04-19 19:06:37 UTC
++++ services/service_manager/runner/host/BUILD.gn
+@@ -28,7 +28,7 @@ source_set("lib") {
+ "//mojo/public/cpp/system",
+ ]
+
+- if (is_linux && !is_android) {
++ if (is_linux && !is_android && !is_bsd) {
+ deps += [ "//sandbox/linux:sandbox_services" ]
+ }
+ }
diff --git a/www/iridium/files/patch-services_service__manager_standalone_context.cc b/www/iridium/files/patch-services_service__manager_standalone_context.cc
new file mode 100644
index 000000000000..1c778e3d3f20
--- /dev/null
+++ b/www/iridium/files/patch-services_service__manager_standalone_context.cc
@@ -0,0 +1,11 @@
+--- services/service_manager/standalone/context.cc.orig 2017-04-19 19:06:37 UTC
++++ services/service_manager/standalone/context.cc
+@@ -133,7 +133,7 @@ Context::Context(
+ tracing::mojom::StartupPerformanceDataCollectorPtr collector;
+ BindInterface(service_manager(), source_identity, tracing_identity,
+ &collector);
+-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ // CurrentProcessInfo::CreationTime is only defined on some platforms.
+ const base::Time creation_time = base::CurrentProcessInfo::CreationTime();
+ collector->SetServiceManagerProcessCreationTime(
diff --git a/www/iridium/files/patch-services_ui_BUILD.gn b/www/iridium/files/patch-services_ui_BUILD.gn
new file mode 100644
index 000000000000..144b26e28ad9
--- /dev/null
+++ b/www/iridium/files/patch-services_ui_BUILD.gn
@@ -0,0 +1,18 @@
+--- services/ui/BUILD.gn.orig 2017-04-19 19:06:37 UTC
++++ services/ui/BUILD.gn
+@@ -12,7 +12,6 @@ group("all") {
+ testonly = true
+ deps = [
+ ":ui",
+- "//services/ui/ime/test_ime_driver",
+ "//services/ui/test_wm",
+ ]
+ }
+@@ -32,7 +31,6 @@ service("ui") {
+ ":resources_100",
+ ":resources_200",
+ ":resources_strings",
+- "//services/ui/ime/test_ime_driver",
+ ]
+ }
+
diff --git a/www/iridium/files/patch-services_ui_gpu_gpu__main.cc b/www/iridium/files/patch-services_ui_gpu_gpu__main.cc
new file mode 100644
index 000000000000..7a3bda519c92
--- /dev/null
+++ b/www/iridium/files/patch-services_ui_gpu_gpu__main.cc
@@ -0,0 +1,11 @@
+--- services/ui/gpu/gpu_main.cc.orig 2017-04-19 19:06:37 UTC
++++ services/ui/gpu/gpu_main.cc
+@@ -59,7 +59,7 @@ GpuMain::GpuMain(mojom::GpuMainRequest r
+ // runtime.
+ thread_options.message_loop_type =
+ ui::OzonePlatform::EnsureInstance()->GetMessageLoopTypeForGpu();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ thread_options.message_loop_type = base::MessageLoop::TYPE_DEFAULT;
+ #elif defined(OS_MACOSX)
+ thread_options.message_pump_factory = base::Bind(&CreateMessagePumpMac);
diff --git a/www/iridium/files/patch-services_ui_ime_BUILD.gn b/www/iridium/files/patch-services_ui_ime_BUILD.gn
new file mode 100644
index 000000000000..6eb53422958d
--- /dev/null
+++ b/www/iridium/files/patch-services_ui_ime_BUILD.gn
@@ -0,0 +1,10 @@
+--- services/ui/ime/BUILD.gn.orig 2017-04-19 19:06:37 UTC
++++ services/ui/ime/BUILD.gn
+@@ -51,7 +51,6 @@ service_test("mus_ime_unittests") {
+ data_deps = [
+ ":lib",
+ "//services/ui",
+- "//services/ui/ime/test_ime_driver",
+ ]
+ }
+
diff --git a/www/iridium/files/patch-skia_BUILD.gn b/www/iridium/files/patch-skia_BUILD.gn
new file mode 100644
index 000000000000..ff9f856b82fb
--- /dev/null
+++ b/www/iridium/files/patch-skia_BUILD.gn
@@ -0,0 +1,38 @@
+--- skia/BUILD.gn.orig 2017-04-19 19:06:37 UTC
++++ skia/BUILD.gn
+@@ -127,7 +127,7 @@ config("skia_library_config") {
+ }
+
+ # Settings for text blitting, chosen to approximate the system browser.
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ defines += [
+ "SK_GAMMA_EXPONENT=1.2",
+ "SK_GAMMA_CONTRAST=0.2",
+@@ -326,7 +326,7 @@ component("skia") {
+ set_sources_assignment_filter(sources_assignment_filter)
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [
+ "//third_party/skia/src/ports/SkFontConfigInterface.cpp",
+ "//third_party/skia/src/ports/SkFontConfigInterface_direct.cpp",
+@@ -335,7 +335,7 @@ component("skia") {
+ ]
+ }
+
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ sources += [
+ "//third_party/skia/src/ports/SkFontHost_FreeType.cpp",
+ "//third_party/skia/src/ports/SkFontHost_FreeType_common.cpp",
+@@ -374,7 +374,7 @@ component("skia") {
+ "//base/third_party/dynamic_annotations",
+ ]
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ if (use_pango) {
+ configs += [ "//build/config/linux/pangocairo" ]
+ }
diff --git a/www/iridium/files/patch-skia_ext_SkMemory__new__handler.cpp b/www/iridium/files/patch-skia_ext_SkMemory__new__handler.cpp
new file mode 100644
index 000000000000..558b3fc80d47
--- /dev/null
+++ b/www/iridium/files/patch-skia_ext_SkMemory__new__handler.cpp
@@ -0,0 +1,20 @@
+--- skia/ext/SkMemory_new_handler.cpp.orig 2017-04-19 19:06:37 UTC
++++ skia/ext/SkMemory_new_handler.cpp
+@@ -68,7 +68,7 @@ static void* sk_malloc_nothrow(size_t si
+ // TODO(b.kelemen): we should always use UncheckedMalloc but currently it
+ // doesn't work as intended everywhere.
+ void* result;
+-#if defined(OS_IOS)
++#if defined(OS_IOS) || defined(OS_FREEBSD)
+ result = malloc(size);
+ #else
+ // It's the responsibility of the caller to check the return value.
+@@ -95,7 +95,7 @@ void* sk_calloc(size_t size) {
+ // TODO(b.kelemen): we should always use UncheckedCalloc but currently it
+ // doesn't work as intended everywhere.
+ void* result;
+-#if defined(OS_IOS)
++#if defined(OS_IOS) || defined(OS_FREEBSD)
+ result = calloc(1, size);
+ #else
+ // It's the responsibility of the caller to check the return value.
diff --git a/www/iridium/files/patch-storage_browser_quota_quota__settings.cc b/www/iridium/files/patch-storage_browser_quota_quota__settings.cc
new file mode 100644
index 000000000000..2a67f216c196
--- /dev/null
+++ b/www/iridium/files/patch-storage_browser_quota_quota__settings.cc
@@ -0,0 +1,11 @@
+--- storage/browser/quota/quota_settings.cc.orig 2017-04-19 19:06:37 UTC
++++ storage/browser/quota/quota_settings.cc
+@@ -53,7 +53,7 @@ base::Optional<storage::QuotaSettings> C
+ 1000 * kMBytes;
+ #elif defined(OS_CHROMEOS)
+ 1000 * kMBytes;
+-#elif defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX)
++#elif defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD)
+ 10000 * kMBytes;
+ #else
+ #error "Port: Need to define an OS accomodation value for unknown OS."
diff --git a/www/iridium/files/patch-testing_gtest_src_gtest.cc b/www/iridium/files/patch-testing_gtest_src_gtest.cc
new file mode 100644
index 000000000000..e1797a903b52
--- /dev/null
+++ b/www/iridium/files/patch-testing_gtest_src_gtest.cc
@@ -0,0 +1,22 @@
+--- testing/gtest/src/gtest.cc.orig 2017-04-19 19:07:41 UTC
++++ testing/gtest/src/gtest.cc
+@@ -122,6 +122,10 @@
+
+ #endif // GTEST_OS_LINUX
+
++#if GTEST_OS_FREEBSD
++# include <sys/socket.h>
++#endif
++
+ #if GTEST_HAS_EXCEPTIONS
+ # include <stdexcept>
+ #endif
+@@ -1930,7 +1934,7 @@ bool String::CaseInsensitiveWideCStringE
+
+ #if GTEST_OS_WINDOWS
+ return _wcsicmp(lhs, rhs) == 0;
+-#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID
++#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID && !GTEST_OS_FREEBSD
+ return wcscasecmp(lhs, rhs) == 0;
+ #else
+ // Android, Mac OS X and Cygwin don't define wcscasecmp.
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_bindings_core_v8_V8ScriptRunner.cpp b/www/iridium/files/patch-third__party_WebKit_Source_bindings_core_v8_V8ScriptRunner.cpp
new file mode 100644
index 000000000000..699c83f1b6f8
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_bindings_core_v8_V8ScriptRunner.cpp
@@ -0,0 +1,11 @@
+--- third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp.orig 2017-04-19 19:06:49 UTC
++++ third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp
+@@ -48,6 +48,8 @@
+
+ #if OS(WIN)
+ #include <malloc.h>
++#elif OS(FREEBSD)
++#include <stdlib.h>
+ #else
+ #include <alloca.h>
+ #endif
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_core_layout_BUILD.gn b/www/iridium/files/patch-third__party_WebKit_Source_core_layout_BUILD.gn
new file mode 100644
index 000000000000..0e5be2c42562
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_core_layout_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/WebKit/Source/core/layout/BUILD.gn.orig 2017-04-19 19:06:49 UTC
++++ third_party/WebKit/Source/core/layout/BUILD.gn
+@@ -381,7 +381,7 @@ blink_core_sources("layout") {
+ sources += [ "LayoutThemeFontProviderDefault.cpp" ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [
+ "LayoutThemeLinux.cpp",
+ "LayoutThemeLinux.h",
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontCache.cpp b/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontCache.cpp
new file mode 100644
index 000000000000..df1d1888e1fe
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontCache.cpp
@@ -0,0 +1,14 @@
+--- third_party/WebKit/Source/platform/fonts/FontCache.cpp.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/platform/fonts/FontCache.cpp
+@@ -63,9 +63,9 @@ using namespace WTF;
+
+ namespace blink {
+
+-#if !OS(WIN) && !OS(LINUX)
++#if !OS(WIN) && !OS(LINUX) && !OS(FREEBSD) && !OS(OPENBSD)
+ FontCache::FontCache() : m_purgePreventCount(0), m_fontManager(nullptr) {}
+-#endif // !OS(WIN) && !OS(LINUX)
++#endif // !OS(WIN) && !OS(LINUX) && !OS(FREEBSD) && !OS(OPENBSD)
+
+ typedef HashMap<unsigned,
+ std::unique_ptr<FontPlatformData>,
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontCache.h b/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontCache.h
new file mode 100644
index 000000000000..e047af0b87b1
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontCache.h
@@ -0,0 +1,20 @@
+--- third_party/WebKit/Source/platform/fonts/FontCache.h.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/platform/fonts/FontCache.h
+@@ -144,7 +144,7 @@ class PLATFORM_EXPORT FontCache {
+ #else
+ static const AtomicString& legacySystemFontFamily();
+ #endif
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(LINUX) || OS(ANDROID) || OS(FREEBSD)
+ static void setSystemFontFamily(const AtomicString&);
+ #endif
+
+@@ -258,7 +258,7 @@ class PLATFORM_EXPORT FontCache {
+ const FontFaceCreationParams&,
+ CString& name);
+
+-#if OS(ANDROID) || OS(LINUX)
++#if OS(ANDROID) || OS(LINUX) || OS(FREEBSD) || OS(OPENBSD)
+ static AtomicString getFamilyNameForCharacter(SkFontMgr*,
+ UChar32,
+ const FontDescription&,
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontPlatformData.cpp b/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontPlatformData.cpp
new file mode 100644
index 000000000000..0fbcbf639a3a
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontPlatformData.cpp
@@ -0,0 +1,47 @@
+--- third_party/WebKit/Source/platform/fonts/FontPlatformData.cpp.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/platform/fonts/FontPlatformData.cpp
+@@ -99,7 +99,7 @@ FontPlatformData::FontPlatformData(const
+ m_syntheticBold(source.m_syntheticBold),
+ m_syntheticItalic(source.m_syntheticItalic),
+ m_orientation(source.m_orientation),
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(LINUX) || OS(ANDROID) || OS(BSD)
+ m_style(source.m_style),
+ #endif
+ m_harfBuzzFace(nullptr),
+@@ -122,7 +122,7 @@ FontPlatformData::FontPlatformData(const
+ m_syntheticBold(src.m_syntheticBold),
+ m_syntheticItalic(src.m_syntheticItalic),
+ m_orientation(src.m_orientation),
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(LINUX) || OS(ANDROID) || OS(BSD)
+ m_style(FontRenderStyle::querySystem(m_family,
+ m_textSize,
+ m_typeface->fontStyle())),
+@@ -155,7 +155,7 @@ FontPlatformData::FontPlatformData(sk_sp
+ m_syntheticBold(syntheticBold),
+ m_syntheticItalic(syntheticItalic),
+ m_orientation(orientation),
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(LINUX) || OS(ANDROID) | OS(BSD)
+ m_style(FontRenderStyle::querySystem(m_family,
+ m_textSize,
+ m_typeface->fontStyle())),
+@@ -200,7 +200,7 @@ const FontPlatformData& FontPlatformData
+ m_syntheticItalic = other.m_syntheticItalic;
+ m_harfBuzzFace = nullptr;
+ m_orientation = other.m_orientation;
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(LINUX) || OS(ANDROID) | OS(BSD)
+ m_style = other.m_style;
+ #endif
+
+@@ -226,7 +226,7 @@ bool FontPlatformData::operator==(const
+ m_isHashTableDeletedValue == a.m_isHashTableDeletedValue &&
+ m_syntheticBold == a.m_syntheticBold &&
+ m_syntheticItalic == a.m_syntheticItalic
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(LINUX) || OS(ANDROID) || OS(BSD)
+ && m_style == a.m_style
+ #endif
+ && m_orientation == a.m_orientation;
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontPlatformData.h b/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontPlatformData.h
new file mode 100644
index 000000000000..150dd3c4b14a
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_FontPlatformData.h
@@ -0,0 +1,32 @@
+--- third_party/WebKit/Source/platform/fonts/FontPlatformData.h.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/platform/fonts/FontPlatformData.h
+@@ -47,9 +47,9 @@
+ #include "wtf/text/CString.h"
+ #include "wtf/text/StringImpl.h"
+
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(LINUX) || OS(ANDROID) || OS(BSD)
+ #include "platform/fonts/linux/FontRenderStyle.h"
+-#endif // OS(LINUX) || OS(ANDROID)
++#endif // OS(LINUX) || OS(ANDROID) || OS(BSD)
+
+ #if OS(MACOSX)
+ OBJC_CLASS NSFont;
+@@ -151,7 +151,7 @@ class PLATFORM_EXPORT FontPlatformData {
+ PassRefPtr<OpenTypeVerticalData> verticalData() const;
+ PassRefPtr<SharedBuffer> openTypeTable(SkFontTableTag) const;
+
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(LINUX) || OS(ANDROID) || OS(BSD)
+ // The returned styles are all actual styles without
+ // FontRenderStyle::NoPreference.
+ const FontRenderStyle& getFontRenderStyle() const { return m_style; }
+@@ -179,7 +179,7 @@ class PLATFORM_EXPORT FontPlatformData {
+ FontOrientation m_orientation;
+
+ private:
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(LINUX) || OS(ANDROID) || OS(BSD)
+ FontRenderStyle m_style;
+ #endif
+
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_SimpleFontData.cpp b/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_SimpleFontData.cpp
new file mode 100644
index 000000000000..75a09260b554
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_SimpleFontData.cpp
@@ -0,0 +1,29 @@
+--- third_party/WebKit/Source/platform/fonts/SimpleFontData.cpp.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/platform/fonts/SimpleFontData.cpp
+@@ -50,7 +50,7 @@ namespace blink {
+ const float smallCapsFontSizeMultiplier = 0.7f;
+ const float emphasisMarkFontSizeMultiplier = 0.5f;
+
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(LINUX) || OS(ANDROID) || OS(BSD)
+ // This is the largest VDMX table which we'll try to load and parse.
+ static const size_t maxVDMXTableSize = 1024 * 1024; // 1 MB
+ #endif
+@@ -109,7 +109,7 @@ void SimpleFontData::platformInit(bool s
+ int vdmxAscent = 0, vdmxDescent = 0;
+ bool isVDMXValid = false;
+
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(LINUX) || OS(ANDROID) || OS(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).
+@@ -157,7 +157,7 @@ void SimpleFontData::platformInit(bool s
+ visual_overflow_inflation_for_ascent_ = 1;
+ if (descent < metrics.fDescent) {
+ visual_overflow_inflation_for_descent_ = 1;
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(LINUX) || OS(ANDROID) || OS(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/iridium/files/patch-third__party_WebKit_Source_platform_fonts_skia_FontCacheSkia.cpp b/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_skia_FontCacheSkia.cpp
new file mode 100644
index 000000000000..092388b02704
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_platform_fonts_skia_FontCacheSkia.cpp
@@ -0,0 +1,20 @@
+--- third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/platform/fonts/skia/FontCacheSkia.cpp
+@@ -68,7 +68,7 @@ AtomicString toAtomicString(const SkStri
+ return AtomicString::fromUTF8(str.c_str(), str.size());
+ }
+
+-#if OS(ANDROID) || OS(LINUX)
++#if OS(ANDROID) || OS(LINUX) || OS(BSD)
+ // Android special locale for retrieving the color emoji font
+ // based on the proposed changes in UTR #51 for introducing
+ // an Emoji script code:
+@@ -240,7 +240,7 @@ sk_sp<SkTypeface> FontCache::createTypef
+ }
+ #endif
+
+-#if OS(LINUX) || OS(WIN)
++#if OS(LINUX) || OS(WIN) || OS(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
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_platform_heap_GCInfo.cpp b/www/iridium/files/patch-third__party_WebKit_Source_platform_heap_GCInfo.cpp
new file mode 100644
index 000000000000..716742439bc3
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_platform_heap_GCInfo.cpp
@@ -0,0 +1,11 @@
+--- third_party/WebKit/Source/platform/heap/GCInfo.cpp.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/platform/heap/GCInfo.cpp
+@@ -7,6 +7,8 @@
+ #include "platform/heap/Handle.h"
+ #include "platform/heap/Heap.h"
+
++#include <stdlib.h>
++
+ namespace blink {
+
+ // GCInfo indices start from 1 for heap objects, with 0 being treated
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_platform_heap_StackFrameDepth.cpp b/www/iridium/files/patch-third__party_WebKit_Source_platform_heap_StackFrameDepth.cpp
new file mode 100644
index 000000000000..cbc8f0617453
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_platform_heap_StackFrameDepth.cpp
@@ -0,0 +1,11 @@
+--- third_party/WebKit/Source/platform/heap/StackFrameDepth.cpp.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/platform/heap/StackFrameDepth.cpp
+@@ -7,6 +7,8 @@
+ #include "public/platform/Platform.h"
+ #include "wtf/StackUtil.h"
+
++#include <pthread_np.h>
++
+ #if OS(WIN)
+ #include <stddef.h>
+ #include <windows.h>
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_web_PopupMenuImpl.cpp b/www/iridium/files/patch-third__party_WebKit_Source_web_PopupMenuImpl.cpp
new file mode 100644
index 000000000000..00de0c3a34a8
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_web_PopupMenuImpl.cpp
@@ -0,0 +1,11 @@
+--- third_party/WebKit/Source/web/PopupMenuImpl.cpp.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/web/PopupMenuImpl.cpp
+@@ -154,7 +154,7 @@ class PopupMenuImpl::ItemIterationContex
+ m_isInGroup(false),
+ m_buffer(buffer) {
+ DCHECK(m_buffer);
+-#if OS(LINUX)
++#if OS(LINUX) || OS(BSD)
+ // On other platforms, the <option> background color is the same as the
+ // <select> background color. On Linux, that makes the <option>
+ // background color very dark, so by default, try to use a lighter
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_wtf_Assertions.cpp b/www/iridium/files/patch-third__party_WebKit_Source_wtf_Assertions.cpp
new file mode 100644
index 000000000000..f586514c6413
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_wtf_Assertions.cpp
@@ -0,0 +1,20 @@
+--- third_party/WebKit/Source/wtf/Assertions.cpp.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/wtf/Assertions.cpp
+@@ -60,7 +60,7 @@
+ #include <windows.h>
+ #endif
+
+-#if OS(MACOSX) || (OS(LINUX) && !defined(__UCLIBC__))
++#if OS(MACOSX) || ((OS(LINUX) || OS(BSD)) && !defined(__UCLIBC__))
+ #include <cxxabi.h>
+ #include <dlfcn.h>
+ #include <execinfo.h>
+@@ -142,7 +142,7 @@ class FrameToNameScope {
+ };
+
+ FrameToNameScope::FrameToNameScope(void* addr) : m_name(0), m_cxaDemangled(0) {
+-#if OS(MACOSX) || (OS(LINUX) && !defined(__UCLIBC__))
++#if OS(MACOSX) || ((OS(LINUX) || OS(BSD)) && !defined(__UCLIBC__))
+ Dl_info info;
+ if (!dladdr(addr, &info) || !info.dli_sname)
+ return;
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_wtf_Atomics.h b/www/iridium/files/patch-third__party_WebKit_Source_wtf_Atomics.h
new file mode 100644
index 000000000000..0d6be9148ace
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_wtf_Atomics.h
@@ -0,0 +1,11 @@
+--- third_party/WebKit/Source/wtf/Atomics.h.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/wtf/Atomics.h
+@@ -176,7 +176,7 @@ ALWAYS_INLINE void atomicSetOneToZero(in
+ #if defined(THREAD_SANITIZER)
+ // The definitions below assume an LP64 data model. This is fine because
+ // TSan is only supported on x86_64 Linux.
+-#if CPU(64BIT) && OS(LINUX)
++#if CPU(64BIT) && (OS(LINUX) || OS(BSD))
+ ALWAYS_INLINE void releaseStore(volatile int* ptr, int value) {
+ __tsan_atomic32_store(ptr, value, __tsan_memory_order_release);
+ }
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_wtf_BUILD.gn b/www/iridium/files/patch-third__party_WebKit_Source_wtf_BUILD.gn
new file mode 100644
index 000000000000..3f1cf6465e60
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_wtf_BUILD.gn
@@ -0,0 +1,13 @@
+--- third_party/WebKit/Source/wtf/BUILD.gn.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/wtf/BUILD.gn
+@@ -280,6 +280,10 @@ component("wtf") {
+ libs = [ "dl" ]
+ }
+
++ if (is_bsd) {
++ libs = [ "execinfo" ]
++ }
++
+ if (is_mac) {
+ libs = [
+ "CoreFoundation.framework",
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_wtf_ByteSwap.h b/www/iridium/files/patch-third__party_WebKit_Source_wtf_ByteSwap.h
new file mode 100644
index 000000000000..11317a1ac1c6
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_wtf_ByteSwap.h
@@ -0,0 +1,24 @@
+--- third_party/WebKit/Source/wtf/ByteSwap.h.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/wtf/ByteSwap.h
+@@ -60,15 +60,21 @@ ALWAYS_INLINE uint16_t bswap16(uint16_t
+
+ #else
+
++#ifndef bswap64
+ ALWAYS_INLINE uint64_t bswap64(uint64_t x) {
+ return __builtin_bswap64(x);
+ }
++#endif
++#ifndef bswap32
+ ALWAYS_INLINE uint32_t bswap32(uint32_t x) {
+ return __builtin_bswap32(x);
+ }
++#endif
++#ifndef bswap16
+ ALWAYS_INLINE uint16_t bswap16(uint16_t x) {
+ return __builtin_bswap16(x);
+ }
++#endif
+
+ #endif
+
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_wtf_ContainerAnnotations.h b/www/iridium/files/patch-third__party_WebKit_Source_wtf_ContainerAnnotations.h
new file mode 100644
index 000000000000..63eecc98cde7
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_wtf_ContainerAnnotations.h
@@ -0,0 +1,11 @@
+--- third_party/WebKit/Source/wtf/ContainerAnnotations.h.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/wtf/ContainerAnnotations.h
+@@ -10,7 +10,7 @@
+
+ // TODO(ochang): Remove the CPU(X86_64) condition to enable this for X86 once
+ // the crashes there have been fixed: http://crbug.com/461406
+-#if defined(ADDRESS_SANITIZER) && OS(LINUX) && CPU(X86_64)
++#if defined(ADDRESS_SANITIZER) && (OS(LINUX) || OS(BSD)) && CPU(X86_64)
+ #define ANNOTATE_CONTIGUOUS_CONTAINER
+ #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize) \
+ if (buffer) { \
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_wtf_StackUtil.cpp b/www/iridium/files/patch-third__party_WebKit_Source_wtf_StackUtil.cpp
new file mode 100644
index 000000000000..232a8e9cbbc2
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_wtf_StackUtil.cpp
@@ -0,0 +1,13 @@
+--- third_party/WebKit/Source/wtf/StackUtil.cpp.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/wtf/StackUtil.cpp
+@@ -8,6 +8,10 @@
+ #include "wtf/Threading.h"
+ #include "wtf/WTFThreadData.h"
+
++#if OS(FREEBSD)
++#include <pthread_np.h>
++#endif
++
+ #if OS(WIN)
+ #include <stddef.h>
+ #include <windows.h>
diff --git a/www/iridium/files/patch-third__party_WebKit_Source_wtf_ThreadingPthreads.cpp b/www/iridium/files/patch-third__party_WebKit_Source_wtf_ThreadingPthreads.cpp
new file mode 100644
index 000000000000..f31ce4568783
--- /dev/null
+++ b/www/iridium/files/patch-third__party_WebKit_Source_wtf_ThreadingPthreads.cpp
@@ -0,0 +1,29 @@
+--- third_party/WebKit/Source/wtf/ThreadingPthreads.cpp.orig 2017-04-19 19:06:50 UTC
++++ third_party/WebKit/Source/wtf/ThreadingPthreads.cpp
+@@ -49,11 +49,15 @@
+ #include <objc/objc-auto.h>
+ #endif
+
+-#if OS(LINUX)
++#if OS(LINUX) || OS(BSD)
+ #include <sys/syscall.h>
+ #endif
+
+-#if OS(LINUX) || OS(ANDROID)
++#if OS(BSD)
++#include <pthread_np.h>
++#endif
++
++#if OS(LINUX) || OS(ANDROID) || OS(BSD)
+ #include <unistd.h>
+ #endif
+
+@@ -66,6 +70,8 @@ ThreadIdentifier currentThreadSyscall()
+ return pthread_mach_thread_np(pthread_self());
+ #elif OS(LINUX)
+ return syscall(__NR_gettid);
++#elif OS(BSD)
++ return pthread_getthreadid_np();
+ #elif OS(ANDROID)
+ return gettid();
+ #else
diff --git a/www/iridium/files/patch-third__party_angle_BUILD.gn b/www/iridium/files/patch-third__party_angle_BUILD.gn
new file mode 100644
index 000000000000..461ff42a959e
--- /dev/null
+++ b/www/iridium/files/patch-third__party_angle_BUILD.gn
@@ -0,0 +1,46 @@
+--- third_party/angle/BUILD.gn.orig 2017-04-19 19:07:43 UTC
++++ third_party/angle/BUILD.gn
+@@ -16,6 +16,12 @@ if (ozone_platform_gbm) {
+ }
+ }
+
++if (use_x11) {
++ pkg_config("x11") {
++ packages = [ "x11", "xi", "xext" ]
++ }
++}
++
+ angle_git_is_present = exec_script("src/commit_id.py",
+ [
+ "check",
+@@ -418,11 +424,7 @@ static_library("libANGLE") {
+ if (use_x11) {
+ sources += rebase_path(gles_gypi.libangle_gl_glx_sources, ".", "src")
+ deps += [ "src/third_party/libXNVCtrl:libXNVCtrl" ]
+- libs += [
+- "X11",
+- "Xi",
+- "Xext",
+- ]
++ configs += [ ":x11" ]
+ }
+ if (is_mac) {
+ sources += rebase_path(gles_gypi.libangle_gl_cgl_sources, ".", "src")
+@@ -627,7 +629,7 @@ util_gypi = exec_script("//build/gypi_to
+
+ config("angle_util_config") {
+ include_dirs = [ "util" ]
+- if (is_linux && use_x11) {
++ if ((is_linux || is_bsd) && use_x11) {
+ libs = [ "X11" ]
+ }
+ }
+@@ -654,7 +656,7 @@ foreach(is_shared_library,
+ sources += rebase_path(util_gypi.util_win32_sources, ".", "util")
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += rebase_path(util_gypi.util_linux_sources, ".", "util")
+ libs = [
+ "rt",
diff --git a/www/iridium/files/patch-third__party_angle_gni_angle.gni b/www/iridium/files/patch-third__party_angle_gni_angle.gni
new file mode 100644
index 000000000000..bcb9b5b1e7f8
--- /dev/null
+++ b/www/iridium/files/patch-third__party_angle_gni_angle.gni
@@ -0,0 +1,11 @@
+--- third_party/angle/gni/angle.gni.orig 2017-04-19 19:07:43 UTC
++++ third_party/angle/gni/angle.gni
+@@ -20,6 +20,8 @@ if (is_win) {
+ import("//build/config/win/visual_studio_version.gni")
+ } else if (is_linux && use_x11 && !is_chromeos) {
+ angle_enable_gl = true
++} else if (is_bsd) {
++ angle_enable_gl = true
+ } else if (is_mac || ozone_platform_gbm) {
+ angle_enable_gl = true
+ } else if (is_android) {
diff --git a/www/iridium/files/patch-third__party_angle_src_tests_BUILD.gn b/www/iridium/files/patch-third__party_angle_src_tests_BUILD.gn
new file mode 100644
index 000000000000..62bde77ad58e
--- /dev/null
+++ b/www/iridium/files/patch-third__party_angle_src_tests_BUILD.gn
@@ -0,0 +1,65 @@
+--- third_party/angle/src/tests/BUILD.gn.orig 2017-04-19 19:07:43 UTC
++++ third_party/angle/src/tests/BUILD.gn
+@@ -41,7 +41,7 @@ test("angle_unittests") {
+ ]
+ }
+
+-if (is_win || is_linux || is_mac || is_android) {
++if (is_win || is_linux || is_mac || is_android || is_bsd) {
+ end2end_gypi = exec_script("//build/gypi_to_gn.py",
+ [
+ rebase_path("angle_end2end_tests.gypi"),
+@@ -82,7 +82,7 @@ if (is_win || is_linux || is_mac || is_a
+ "//third_party/angle:libANGLE_config",
+ ]
+
+- if (is_linux && !is_component_build) {
++ if ((is_linux || is_bsd) && !is_component_build) {
+ # Set rpath to find libEGL.so and libGLESv2.so even in a non-component build.
+ configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
+ }
+@@ -230,7 +230,7 @@ if (build_angle_deqp_tests) {
+ # Ask the system headers to expose all the regular function otherwise
+ # dEQP doesn't compile and produces warnings about implicitly defined
+ # functions.
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ # This has to be GNU_SOURCE as on Linux dEQP uses syscall()
+ defines += [ "_GNU_SOURCE" ]
+ }
+@@ -253,7 +253,7 @@ if (build_angle_deqp_tests) {
+ ]
+ }
+
+- if (is_linux || is_android) {
++ if (is_linux || is_android || is_bsd) {
+ deqp_undefine_configs += [ "//build/config/gcc:no_exceptions" ]
+ }
+
+@@ -290,7 +290,7 @@ if (build_angle_deqp_tests) {
+ if (is_win) {
+ sources += rebase_path(deqp_gypi.deqp_libtester_sources_win, ".", "../..")
+ }
+- if (is_linux || is_android) {
++ if (is_linux || is_android || is_bsd) {
+ sources +=
+ rebase_path(deqp_gypi.deqp_libtester_sources_unix, ".", "../..")
+ }
+@@ -320,7 +320,7 @@ if (build_angle_deqp_tests) {
+
+ # Taken from gpu/BUILD.gn
+ # TODO(jmadill): this should be in a shared location
+- if (is_linux && !is_chromecast) {
++ if ((is_linux || is_bsd) && !is_chromecast) {
+ libs = [ "pci" ]
+ }
+ }
+@@ -396,7 +396,7 @@ if (build_angle_deqp_tests) {
+ "../../../deqp/src/data/",
+ ]
+
+- if (is_linux && !is_component_build) {
++ if ((is_linux || is_bsd) && !is_component_build) {
+ # Set rpath to find *.so files even in a non-component build.
+ configs += [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
+ }
diff --git a/www/iridium/files/patch-third__party_boringssl_BUILD.gn b/www/iridium/files/patch-third__party_boringssl_BUILD.gn
new file mode 100644
index 000000000000..549874c3e4a5
--- /dev/null
+++ b/www/iridium/files/patch-third__party_boringssl_BUILD.gn
@@ -0,0 +1,29 @@
+--- third_party/boringssl/BUILD.gn.orig 2017-04-19 19:06:51 UTC
++++ third_party/boringssl/BUILD.gn
+@@ -83,7 +83,7 @@ if (is_win && !is_msan) {
+ } else if (current_cpu == "x64") {
+ if (is_mac) {
+ sources += crypto_sources_mac_x86_64
+- } else if (is_linux || is_android) {
++ } else if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_x86_64
+ } else {
+ public_configs = [ ":no_asm_config" ]
+@@ -91,14 +91,14 @@ if (is_win && !is_msan) {
+ } else if (current_cpu == "x86") {
+ if (is_mac) {
+ sources += crypto_sources_mac_x86
+- } else if (is_linux || is_android) {
++ } else if (is_linux || is_bsd || is_android) {
+ sources += crypto_sources_linux_x86
+ } else {
+ public_configs = [ ":no_asm_config" ]
+ }
+- } else if (current_cpu == "arm" && (is_linux || is_android)) {
++ } else if (current_cpu == "arm" && (is_linux || is_bsd || is_android)) {
+ sources += crypto_sources_linux_arm
+- } else if (current_cpu == "arm64" && (is_linux || is_android)) {
++ } else if (current_cpu == "arm64" && (is_linux || is_bsd || is_android)) {
+ sources += crypto_sources_linux_aarch64
+ } else {
+ public_configs = [ ":no_asm_config" ]
diff --git a/www/iridium/files/patch-third__party_boringssl_src_crypto_ex__data.c b/www/iridium/files/patch-third__party_boringssl_src_crypto_ex__data.c
new file mode 100644
index 000000000000..671756035ef6
--- /dev/null
+++ b/www/iridium/files/patch-third__party_boringssl_src_crypto_ex__data.c
@@ -0,0 +1,13 @@
+--- third_party/boringssl/src/crypto/ex_data.c.orig 2017-04-19 19:07:42 UTC
++++ third_party/boringssl/src/crypto/ex_data.c
+@@ -188,7 +188,9 @@ int CRYPTO_set_ex_data(CRYPTO_EX_DATA *a
+ }
+ }
+
+- sk_void_set(ad->sk, index, val);
++ // expression result unused; should this cast be to 'void'?
++ // seems it should, feel free to investigate those #def
++ (void) sk_void_set(ad->sk, index, val);
+ return 1;
+ }
+
diff --git a/www/iridium/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h b/www/iridium/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h
new file mode 100644
index 000000000000..27d8a7166b16
--- /dev/null
+++ b/www/iridium/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h
@@ -0,0 +1,11 @@
+--- third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h.orig 2017-04-19 19:06:51 UTC
++++ third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h
+@@ -334,6 +334,8 @@ class Status {
+ */
+ PERMANENT_FAILURE
+ };
++
++ Status() : code_(SUCCESS), message_() {}
+
+ /* Creates a new Status object given the code and message. */
+ Status(Code code, const string& message) : code_(code), message_(message) {}
diff --git a/www/iridium/files/patch-third__party_expat_BUILD.gn b/www/iridium/files/patch-third__party_expat_BUILD.gn
new file mode 100644
index 000000000000..7dd3c3906595
--- /dev/null
+++ b/www/iridium/files/patch-third__party_expat_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/expat/BUILD.gn.orig 2017-04-19 19:06:51 UTC
++++ third_party/expat/BUILD.gn
+@@ -9,7 +9,7 @@ import("//testing/libfuzzer/fuzzer_test.
+ # let's not pull it in twice.
+ # Chromecast doesn't ship expat as a system library.
+ # Libfuzzer and AFL need to build library from sources.
+-if (is_linux && !is_chromecast && !use_libfuzzer && !use_afl) {
++if ((is_linux || is_bsd) && !is_chromecast && !use_libfuzzer && !use_afl) {
+ config("expat_config") {
+ libs = [ "expat" ]
+ }
diff --git a/www/iridium/files/patch-third__party_ffmpeg_BUILD.gn b/www/iridium/files/patch-third__party_ffmpeg_BUILD.gn
new file mode 100644
index 000000000000..ab83a96fdb39
--- /dev/null
+++ b/www/iridium/files/patch-third__party_ffmpeg_BUILD.gn
@@ -0,0 +1,18 @@
+--- third_party/ffmpeg/BUILD.gn.orig 2017-04-19 19:07:44 UTC
++++ third_party/ffmpeg/BUILD.gn
+@@ -6,8 +6,13 @@ import("ffmpeg_options.gni")
+ import("ffmpeg_generated.gni")
+
+ # Path to platform configuration files.
+-platform_config_root =
+- "chromium/config/$ffmpeg_branding/$os_config/$ffmpeg_arch"
++if (!is_bsd) {
++ platform_config_root =
++ "chromium/config/$ffmpeg_branding/$os_config/$ffmpeg_arch"
++} else {
++ platform_config_root =
++ "chromium/config/$ffmpeg_branding/linux/$ffmpeg_arch"
++}
+
+ has_yasm_deps =
+ ffmpeg_yasm_sources != [] &&
diff --git a/www/iridium/files/patch-third__party_ffmpeg_ffmpeg__generated.gni b/www/iridium/files/patch-third__party_ffmpeg_ffmpeg__generated.gni
new file mode 100644
index 000000000000..18de5c725e59
--- /dev/null
+++ b/www/iridium/files/patch-third__party_ffmpeg_ffmpeg__generated.gni
@@ -0,0 +1,285 @@
+--- third_party/ffmpeg/ffmpeg_generated.gni.orig 2017-04-19 19:07:44 UTC
++++ third_party/ffmpeg/ffmpeg_generated.gni
+@@ -12,7 +12,7 @@ ffmpeg_c_sources = []
+ ffmpeg_gas_sources = []
+ ffmpeg_yasm_sources = []
+
+-if ((is_android && current_cpu == "arm" && arm_use_neon) || (is_android && current_cpu == "arm64") || (is_android && current_cpu == "mips64el") || (is_android && current_cpu == "mipsel") || (is_android && current_cpu == "x64") || (is_android && current_cpu == "x86") || (is_linux && current_cpu == "arm" && arm_use_neon) || (is_linux && current_cpu == "arm") || (is_linux && current_cpu == "arm64") || (is_linux && current_cpu == "mipsel") || (is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_mac) || (is_win)) {
++if ((is_android && current_cpu == "arm" && arm_use_neon) || (is_android && current_cpu == "arm64") || (is_android && current_cpu == "mips64el") || (is_android && current_cpu == "mipsel") || (is_android && current_cpu == "x64") || (is_android && current_cpu == "x86") || ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon) || ((is_linux || is_bsd) && current_cpu == "arm") || ((is_linux || is_bsd) && current_cpu == "arm64") || ((is_linux || is_bsd) && current_cpu == "mipsel") || ((is_linux || is_bsd) && current_cpu == "x64") || ((is_linux || is_bsd) && current_cpu == "x86") || (is_mac) || (is_win)) {
+ ffmpeg_c_sources += [
+ "libavcodec/allcodecs.c",
+ "libavcodec/autorename_libavcodec_flacdec.c",
+@@ -161,7 +161,7 @@ if ((is_android && current_cpu == "arm"
+ ]
+ }
+
+-if ((is_linux && current_cpu == "arm" && arm_use_neon) || (is_linux && current_cpu == "arm") || (is_linux && current_cpu == "arm64") || (is_linux && current_cpu == "mipsel") || (is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_mac) || (is_win)) {
++if (((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon) || ((is_linux || is_bsd) && current_cpu == "arm") || ((is_linux || is_bsd) && current_cpu == "arm64") || ((is_linux || is_bsd) && current_cpu == "mipsel") || ((is_linux || is_bsd) && current_cpu == "x64") || ((is_linux || is_bsd) && current_cpu == "x86") || (is_mac) || (is_win)) {
+ ffmpeg_c_sources += [
+ "libavcodec/autorename_libavcodec_hpeldsp.c",
+ "libavcodec/autorename_libavcodec_videodsp.c",
+@@ -176,7 +176,7 @@ if ((is_linux && current_cpu == "arm" &&
+ ]
+ }
+
+-if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mips64el" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) {
++if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mips64el" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "arm" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || ((is_linux | is_bsd) && current_cpu == "x86" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) {
+ ffmpeg_c_sources += [
+ "libavcodec/aac_ac3_parser.c",
+ "libavcodec/aac_parser.c",
+@@ -213,7 +213,7 @@ if ((current_cpu == "x64" && ffmpeg_bran
+ ]
+ }
+
+-if ((is_android && current_cpu == "x64") || (is_android && current_cpu == "x86") || (is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_mac) || (is_win)) {
++if ((is_android && current_cpu == "x64") || (is_android && current_cpu == "x86") || ((is_linux || is_bsd) && current_cpu == "x64") || ((is_linux || is_bsd) && current_cpu == "x86") || (is_mac) || (is_win)) {
+ ffmpeg_c_sources += [
+ "libavcodec/x86/autorename_libavcodec_x86_vorbisdsp_init.c",
+ "libavcodec/x86/constants.c",
+@@ -226,7 +226,7 @@ if ((is_android && current_cpu == "x64")
+ ]
+ }
+
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_mac && ffmpeg_branding == "Chrome") || (is_win && ffmpeg_branding == "Chrome")) {
++if (((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "arm" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "x64" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "x86" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_mac && ffmpeg_branding == "Chrome") || (is_win && ffmpeg_branding == "Chrome")) {
+ ffmpeg_c_sources += [
+ "libavcodec/cabac.c",
+ "libavcodec/h2645_parse.c",
+@@ -258,7 +258,7 @@ if ((is_android && current_cpu == "arm"
+ ]
+ }
+
+-if ((is_android && current_cpu == "arm" && arm_use_neon) || (is_linux && current_cpu == "arm" && arm_use_neon) || (is_linux && current_cpu == "arm")) {
++if ((is_android && current_cpu == "arm" && arm_use_neon) || ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon) || ((is_linux || is_bsd) && current_cpu == "arm")) {
+ ffmpeg_c_sources += [
+ "libavcodec/arm/fft_fixed_init_arm.c",
+ "libavcodec/arm/fft_init_arm.c",
+@@ -277,7 +277,7 @@ if ((is_android && current_cpu == "arm"
+ ]
+ }
+
+-if ((is_android && current_cpu == "x64") || (is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_mac) || (is_win)) {
++if ((is_android && current_cpu == "x64") || ((is_linux || is_bsd) && current_cpu == "x64") || ((is_linux || is_bsd) && current_cpu == "x86") || (is_mac) || (is_win)) {
+ ffmpeg_yasm_sources += [
+ "libavcodec/x86/fft.asm",
+ "libavcodec/x86/flacdsp.asm",
+@@ -289,7 +289,7 @@ if ((is_android && current_cpu == "x64")
+ ]
+ }
+
+-if ((is_linux && current_cpu == "x64") || (is_linux && current_cpu == "x86") || (is_mac) || (is_win)) {
++if (((is_linux || is_bsd) && current_cpu == "x64") || ((is_linux || is_bsd) && current_cpu == "x86") || (is_mac) || (is_win)) {
+ ffmpeg_c_sources += [
+ "libavcodec/x86/autorename_libavcodec_x86_videodsp_init.c",
+ "libavcodec/x86/h264_intrapred_init.c",
+@@ -309,7 +309,7 @@ if ((is_linux && current_cpu == "x64") |
+ ]
+ }
+
+-if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) {
++if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "x86" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "x86" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) {
+ ffmpeg_c_sources += [
+ "libavcodec/x86/aacpsdsp_init.c",
+ "libavcodec/x86/dct_init.c",
+@@ -318,7 +318,7 @@ if ((current_cpu == "x64" && ffmpeg_bran
+ ]
+ }
+
+-if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) {
++if ((current_cpu == "x64" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "x86" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_win && ffmpeg_branding == "Chrome")) {
+ ffmpeg_yasm_sources += [
+ "libavcodec/x86/aacpsdsp.asm",
+ "libavcodec/x86/dct32.asm",
+@@ -327,7 +327,7 @@ if ((current_cpu == "x64" && ffmpeg_bran
+ ]
+ }
+
+-if ((is_linux && current_cpu == "arm" && arm_use_neon) || (is_linux && current_cpu == "arm")) {
++if (((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon) || ((is_linux || is_bsd) && current_cpu == "arm")) {
+ ffmpeg_c_sources += [
+ "libavcodec/arm/h264pred_init_arm.c",
+ "libavcodec/arm/hpeldsp_init_arm.c",
+@@ -347,13 +347,13 @@ if ((is_linux && current_cpu == "arm" &&
+ ]
+ }
+
+-if ((is_android && current_cpu == "mips64el") || (is_android && current_cpu == "mipsel") || (is_linux && current_cpu == "mipsel")) {
++if ((is_android && current_cpu == "mips64el") || (is_android && current_cpu == "mipsel") || ((is_linux || is_bsd) && current_cpu == "mipsel")) {
+ ffmpeg_c_sources += [
+ "libavutil/mips/float_dsp_mips.c",
+ ]
+ }
+
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS")) {
++if (((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "arm" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "x86" && ffmpeg_branding == "ChromeOS")) {
+ ffmpeg_c_sources += [
+ "libavcodec/acelp_filters.c",
+ "libavcodec/acelp_pitch_delay.c",
+@@ -408,7 +408,7 @@ if ((is_linux && current_cpu == "arm" &&
+ ]
+ }
+
+-if ((is_android && current_cpu == "arm64") || (is_linux && current_cpu == "arm64")) {
++if ((is_android && current_cpu == "arm64") || ((is_linux || is_bsd) && current_cpu == "arm64")) {
+ ffmpeg_c_sources += [
+ "libavcodec/aarch64/fft_init_aarch64.c",
+ "libavcodec/aarch64/vorbisdsp_init.c",
+@@ -423,7 +423,7 @@ if ((is_android && current_cpu == "arm64
+ ]
+ }
+
+-if ((is_android && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS")) {
++if ((is_android && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "arm" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && ffmpeg_branding == "ChromeOS")) {
+ ffmpeg_c_sources += [
+ "libavcodec/arm/aacpsdsp_init_arm.c",
+ "libavcodec/arm/mpegaudiodsp_init_arm.c",
+@@ -434,7 +434,7 @@ if ((is_android && current_cpu == "arm"
+ ]
+ }
+
+-if ((is_android && current_cpu == "arm" && arm_use_neon) || (is_linux && current_cpu == "arm" && arm_use_neon)) {
++if ((is_android && current_cpu == "arm" && arm_use_neon) || ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon)) {
+ ffmpeg_c_sources += [
+ "libavutil/arm/float_dsp_init_neon.c",
+ ]
+@@ -449,7 +449,7 @@ if ((is_android && current_cpu == "arm"
+ ]
+ }
+
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS")) {
++if (((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "arm" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && ffmpeg_branding == "ChromeOS")) {
+ ffmpeg_c_sources += [
+ "libavcodec/arm/h264chroma_init_arm.c",
+ "libavcodec/arm/h264dsp_init_arm.c",
+@@ -460,7 +460,7 @@ if ((is_linux && current_cpu == "arm" &&
+ ]
+ }
+
+-if ((is_linux && current_cpu == "x64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_mac && ffmpeg_branding == "Chrome") || (is_win && ffmpeg_branding == "Chrome")) {
++if (((is_linux || is_bsd) && current_cpu == "x64" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "x86" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "x86" && ffmpeg_branding == "ChromeOS") || (is_mac && ffmpeg_branding == "Chrome") || (is_win && ffmpeg_branding == "Chrome")) {
+ ffmpeg_c_sources += [
+ "libavcodec/x86/h264_qpel.c",
+ "libavcodec/x86/h264chroma_init.c",
+@@ -481,7 +481,7 @@ if ((is_linux && current_cpu == "x64" &&
+ ]
+ }
+
+-if ((is_android && current_cpu == "mips64el" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS")) {
++if ((is_android && current_cpu == "mips64el" && ffmpeg_branding == "Chrome") || (is_android && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS")) {
+ ffmpeg_c_sources += [
+ "libavcodec/mips/aacdec_mips.c",
+ "libavcodec/mips/aacpsdsp_mips.c",
+@@ -490,7 +490,7 @@ if ((is_android && current_cpu == "mips6
+ ]
+ }
+
+-if (is_linux && current_cpu == "mipsel") {
++if ((is_linux || is_bsd) && current_cpu == "mipsel") {
+ ffmpeg_c_sources += [
+ "libavcodec/mips/h264pred_init_mips.c",
+ "libavcodec/mips/hpeldsp_init_mips.c",
+@@ -498,7 +498,7 @@ if (is_linux && current_cpu == "mipsel")
+ ]
+ }
+
+-if ((is_linux && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS")) {
++if (((is_linux || is_bsd) && current_cpu == "mipsel" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS")) {
+ ffmpeg_c_sources += [
+ "libavcodec/mips/h264chroma_init_mips.c",
+ "libavcodec/mips/h264dsp_init_mips.c",
+@@ -506,7 +506,7 @@ if ((is_linux && current_cpu == "mipsel"
+ ]
+ }
+
+-if (is_linux && current_cpu == "arm64") {
++if ((is_linux || is_bsd) && current_cpu == "arm64") {
+ ffmpeg_c_sources += [
+ "libavcodec/aarch64/h264pred_init.c",
+ "libavcodec/aarch64/hpeldsp_init_aarch64.c",
+@@ -519,7 +519,7 @@ if (is_linux && current_cpu == "arm64")
+ ]
+ }
+
+-if ((is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS")) {
++if ((is_android && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS")) {
+ ffmpeg_c_sources += [
+ "libavcodec/aarch64/mpegaudiodsp_init.c",
+ ]
+@@ -528,7 +528,7 @@ if ((is_android && current_cpu == "arm64
+ ]
+ }
+
+-if ((is_linux && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS")) {
++if (((is_linux || is_bsd) && current_cpu == "arm64" && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS")) {
+ ffmpeg_c_sources += [
+ "libavcodec/aarch64/h264chroma_init_aarch64.c",
+ "libavcodec/aarch64/h264dsp_init_aarch64.c",
+@@ -542,7 +542,7 @@ if ((is_linux && current_cpu == "arm64"
+ ]
+ }
+
+-if (is_linux && current_cpu == "arm" && arm_use_neon) {
++if ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon) {
+ ffmpeg_c_sources += [
+ "libavcodec/arm/hpeldsp_init_neon.c",
+ "libavcodec/arm/vp8dsp_init_neon.c",
+@@ -555,14 +555,14 @@ if (is_linux && current_cpu == "arm" &&
+ ]
+ }
+
+-if ((is_android && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS")) {
++if ((is_android && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS")) {
+ ffmpeg_gas_sources += [
+ "libavcodec/arm/aacpsdsp_neon.S",
+ "libavcodec/arm/sbrdsp_neon.S",
+ ]
+ }
+
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm" && ffmpeg_branding == "ChromeOS")) {
++if (((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "arm" && ffmpeg_branding == "ChromeOS")) {
+ ffmpeg_c_sources += [
+ "libavcodec/arm/blockdsp_init_arm.c",
+ "libavcodec/arm/idctdsp_init_arm.c",
+@@ -586,13 +586,13 @@ if ((is_linux && current_cpu == "arm" &&
+ ]
+ }
+
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS")) {
++if (((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "arm64" && ffmpeg_branding == "ChromeOS")) {
+ ffmpeg_c_sources += [
+ "libavcodec/neon/autorename_libavcodec_neon_mpegvideo.c",
+ ]
+ }
+
+-if ((is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS")) {
++if (((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "Chrome") || ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS")) {
+ ffmpeg_gas_sources += [
+ "libavcodec/arm/h264cmc_neon.S",
+ "libavcodec/arm/h264dsp_neon.S",
+@@ -607,7 +607,7 @@ if (is_win && current_cpu == "x64") {
+ ]
+ }
+
+-if ((is_linux && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || (is_linux && current_cpu == "x86" && ffmpeg_branding == "ChromeOS")) {
++if (((is_linux || is_bsd) && current_cpu == "x64" && ffmpeg_branding == "ChromeOS") || ((is_linux || is_bsd) && current_cpu == "x86" && ffmpeg_branding == "ChromeOS")) {
+ ffmpeg_c_sources += [
+ "libavcodec/x86/blockdsp_init.c",
+ "libavcodec/x86/fdct.c",
+@@ -634,7 +634,7 @@ if ((is_linux && current_cpu == "x64" &&
+ ]
+ }
+
+-if (is_linux && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") {
++if ((is_linux || is_bsd) && current_cpu == "mipsel" && ffmpeg_branding == "ChromeOS") {
+ ffmpeg_c_sources += [
+ "libavcodec/mips/blockdsp_init_mips.c",
+ "libavcodec/mips/h263dsp_init_mips.c",
+@@ -647,7 +647,7 @@ if (is_linux && current_cpu == "mipsel"
+ ]
+ }
+
+-if (is_linux && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") {
++if ((is_linux || is_bsd) && current_cpu == "arm" && arm_use_neon && ffmpeg_branding == "ChromeOS") {
+ ffmpeg_c_sources += [
+ "libavcodec/arm/blockdsp_init_neon.c",
+ "libavcodec/arm/idctdsp_init_neon.c",
diff --git a/www/iridium/files/patch-third__party_ffmpeg_libavutil_mem.c b/www/iridium/files/patch-third__party_ffmpeg_libavutil_mem.c
new file mode 100644
index 000000000000..76c8c9f92ac0
--- /dev/null
+++ b/www/iridium/files/patch-third__party_ffmpeg_libavutil_mem.c
@@ -0,0 +1,12 @@
+--- third_party/ffmpeg/libavutil/mem.c.orig 2017-04-19 19:07:44 UTC
++++ third_party/ffmpeg/libavutil/mem.c
+@@ -32,9 +32,6 @@
+ #include <stdint.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#if HAVE_MALLOC_H
+-#include <malloc.h>
+-#endif
+
+ #include "avassert.h"
+ #include "avutil.h"
diff --git a/www/iridium/files/patch-third__party_fontconfig_BUILD.gn b/www/iridium/files/patch-third__party_fontconfig_BUILD.gn
new file mode 100644
index 000000000000..d6be0905f47d
--- /dev/null
+++ b/www/iridium/files/patch-third__party_fontconfig_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/fontconfig/BUILD.gn.orig 2017-04-19 19:06:51 UTC
++++ third_party/fontconfig/BUILD.gn
+@@ -2,7 +2,7 @@
+ # Use of this source code is governed by a BSD-style license that can be
+ # found in the LICENSE file.
+
+-assert(is_linux)
++assert(is_linux || is_bsd)
+
+ config("fontconfig_config") {
+ include_dirs = [ "src" ]
diff --git a/www/iridium/files/patch-third__party_glslang_BUILD.gn b/www/iridium/files/patch-third__party_glslang_BUILD.gn
new file mode 100644
index 000000000000..dda33f071ba2
--- /dev/null
+++ b/www/iridium/files/patch-third__party_glslang_BUILD.gn
@@ -0,0 +1,20 @@
+--- third_party/glslang/BUILD.gn.orig 2017-04-19 19:06:51 UTC
++++ third_party/glslang/BUILD.gn
+@@ -8,7 +8,7 @@ config("glslang_config") {
+ include_dirs = [ "src" ]
+
+ defines = []
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ defines += [ "GLSLANG_OSINCLUDE_UNIX" ]
+ } else if (is_win) {
+ defines += [ "GLSLANG_OSINCLUDE_WIN32" ]
+@@ -132,7 +132,7 @@ static_library("glslang") {
+ "src/glslang/Public/ShaderLang.h",
+ ]
+
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ sources += [ "src/glslang/OSDependent/Unix/ossource.cpp" ]
+ } else if (is_win) {
+ sources += [
diff --git a/www/iridium/files/patch-third__party_harfbuzz-ng_BUILD.gn b/www/iridium/files/patch-third__party_harfbuzz-ng_BUILD.gn
new file mode 100644
index 000000000000..717835d33d65
--- /dev/null
+++ b/www/iridium/files/patch-third__party_harfbuzz-ng_BUILD.gn
@@ -0,0 +1,20 @@
+--- third_party/harfbuzz-ng/BUILD.gn.orig 2017-04-19 19:06:52 UTC
++++ third_party/harfbuzz-ng/BUILD.gn
+@@ -50,7 +50,7 @@ if (use_system_harfbuzz) {
+
+ # See also chrome/browser/ui/libgtkui/BUILD.gn which pulls this.
+ config("pangoft2_link_hack") {
+- if (is_linux && use_pango && !is_chromeos && !is_official_build &&
++ if ((is_linux || is_bsd) && use_pango && !is_chromeos && !is_official_build &&
+ current_cpu != "arm" && current_cpu != "mipsel" && !is_component_build) {
+ # These symbols are referenced from libpangoft2, which will be
+ # dynamically linked later.
+@@ -200,7 +200,7 @@ if (use_system_harfbuzz) {
+ # in the tree, all symbols pango needs must be included, or
+ # pango uses mixed versions of harfbuzz and leads to crash.
+ # See crbug.com/462689.
+- if (is_linux && use_pango && !is_chromeos && !is_official_build &&
++ if ((is_linux || is_bsd) && use_pango && !is_chromeos && !is_official_build &&
+ current_cpu != "arm" && current_cpu != "mipsel") {
+ deps += [ "//build/linux:freetype2" ]
+ configs -= [ "//build/config/gcc:symbol_visibility_hidden" ]
diff --git a/www/iridium/files/patch-third__party_leveldatabase_env__chromium.cc b/www/iridium/files/patch-third__party_leveldatabase_env__chromium.cc
new file mode 100644
index 000000000000..843dc3f77718
--- /dev/null
+++ b/www/iridium/files/patch-third__party_leveldatabase_env__chromium.cc
@@ -0,0 +1,14 @@
+--- third_party/leveldatabase/env_chromium.cc.orig 2017-04-19 19:06:52 UTC
++++ third_party/leveldatabase/env_chromium.cc
+@@ -25,7 +25,11 @@
+ #include "base/trace_event/trace_event.h"
+ #include "third_party/leveldatabase/chromium_logger.h"
+ #include "third_party/leveldatabase/src/include/leveldb/options.h"
++#if defined(OS_BSD)
++#include <re2/re2.h>
++#else
+ #include "third_party/re2/src/re2/re2.h"
++#endif
+
+ using base::FilePath;
+ using leveldb::FileLock;
diff --git a/www/iridium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h b/www/iridium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
new file mode 100644
index 000000000000..4663573fab03
--- /dev/null
+++ b/www/iridium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h
@@ -0,0 +1,11 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h.orig 2017-04-19 19:07:47 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h
+@@ -56,7 +56,7 @@ template <class T> boost::once_flag Sing
+ #include "phonenumbers/base/logging.h"
+ #include "phonenumbers/base/thread_checker.h"
+
+-#if !defined(__linux__) && !defined(__APPLE__)
++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
+
+ namespace i18n {
+ namespace phonenumbers {
diff --git a/www/iridium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h b/www/iridium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
new file mode 100644
index 000000000000..b4af7627b1ea
--- /dev/null
+++ b/www/iridium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h
@@ -0,0 +1,11 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h.orig 2017-04-19 19:07:47 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h
+@@ -37,7 +37,7 @@ typedef boost::mutex::scoped_lock AutoLo
+ // Dummy lock implementation on non-POSIX platforms. If you are running on a
+ // different platform and care about thread-safety, please compile with
+ // -DI18N_PHONENUMBERS_USE_BOOST.
+-#if !defined(__linux__) && !defined(__APPLE__)
++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
+
+ namespace i18n {
+ namespace phonenumbers {
diff --git a/www/iridium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h b/www/iridium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
new file mode 100644
index 000000000000..3789aea60211
--- /dev/null
+++ b/www/iridium/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h
@@ -0,0 +1,19 @@
+--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h.orig 2017-04-19 19:07:47 UTC
++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h
+@@ -23,6 +23,7 @@
+ // user of the library know that it can't be used in a thread-safe manner when
+ // it is not depending on Boost.
+ #if !defined(__linux__) && !defined(__APPLE__) && \
++ !defined(__FreeBSD__) && !defined(__OpenBSD__) && \
+ !defined(I18N_PHONENUMBERS_NO_THREAD_SAFETY)
+ #error Building without Boost, please provide \
+ -DI18N_PHONENUMBERS_NO_THREAD_SAFETY
+@@ -31,7 +32,7 @@
+ #endif
+
+ #if !defined(NDEBUG) && !defined(I18N_PHONENUMBERS_USE_BOOST) && \
+- (defined(__linux__) || defined(__apple__))
++ (defined(__linux__) || defined(__apple__)) || defined(__FreeBSD__) || defined(__OpenBSD__)
+
+ #include <pthread.h>
+
diff --git a/www/iridium/files/patch-third__party_libusb_BUILD.gn b/www/iridium/files/patch-third__party_libusb_BUILD.gn
new file mode 100644
index 000000000000..05273d1c0de4
--- /dev/null
+++ b/www/iridium/files/patch-third__party_libusb_BUILD.gn
@@ -0,0 +1,256 @@
+--- third_party/libusb/BUILD.gn.orig 2017-04-19 19:06:52 UTC
++++ third_party/libusb/BUILD.gn
+@@ -6,8 +6,25 @@ assert(!is_android && !is_ios)
+
+ import("//build/config/features.gni")
+
+-config("libusb_config") {
+- include_dirs = [ "src/libusb" ]
++declare_args() {
++ use_system_libusb = is_bsd
++}
++
++
++if (use_system_libusb) {
++ config("libusb_config") {
++ defines = ["USE_SYSTEM_LIBUSB"]
++ libs = ["usb"]
++ }
++
++ source_set("libusb") {
++ public_configs = [ ":libusb_config" ]
++ }
++} else {
++
++ config("libusb_config") {
++ include_dirs = [ "src/libusb" ]
++ }
+ }
+
+ config("libusb_warnings") {
+@@ -21,118 +38,119 @@ config("libusb_warnings") {
+ }
+ }
+
+-static_library("libusb") {
+- sources = [
+- "src/config.h",
+- "src/libusb/core.c",
+- "src/libusb/descriptor.c",
+- "src/libusb/hotplug.c",
+- "src/libusb/hotplug.h",
+- "src/libusb/interrupt.c",
+- "src/libusb/interrupt.h",
+- "src/libusb/io.c",
+- "src/libusb/libusb.h",
+- "src/libusb/libusbi.h",
+- "src/libusb/os/darwin_usb.c",
+- "src/libusb/os/darwin_usb.h",
+- "src/libusb/os/poll_posix.c",
+- "src/libusb/os/poll_posix.h",
+- "src/libusb/os/poll_windows.c",
+- "src/libusb/os/poll_windows.h",
+- "src/libusb/os/threads_posix.c",
+- "src/libusb/os/threads_posix.h",
+- "src/libusb/os/threads_windows.c",
+- "src/libusb/os/threads_windows.h",
+- "src/libusb/os/windows_common.h",
+- "src/libusb/os/windows_usb.c",
+- "src/libusb/os/windows_usb.h",
+- "src/libusb/strerror.c",
+- "src/libusb/sync.c",
+- "src/libusb/version.h",
+- "src/libusb/version_nano.h",
+- "src/msvc/config.h",
+- "src/msvc/inttypes.h",
+- "src/msvc/stdint.h",
+- ]
+- deps = []
+- include_dirs = [ "src/libusb/os" ]
++if (!use_system_libusb) {
++ static_library("libusb") {
++ sources = [
++ "src/config.h",
++ "src/libusb/core.c",
++ "src/libusb/descriptor.c",
++ "src/libusb/hotplug.c",
++ "src/libusb/hotplug.h",
++ "src/libusb/interrupt.c",
++ "src/libusb/interrupt.h",
++ "src/libusb/io.c",
++ "src/libusb/libusb.h",
++ "src/libusb/libusbi.h",
++ "src/libusb/os/darwin_usb.c",
++ "src/libusb/os/darwin_usb.h",
++ "src/libusb/os/poll_posix.c",
++ "src/libusb/os/poll_posix.h",
++ "src/libusb/os/poll_windows.c",
++ "src/libusb/os/poll_windows.h",
++ "src/libusb/os/threads_posix.c",
++ "src/libusb/os/threads_posix.h",
++ "src/libusb/os/threads_windows.c",
++ "src/libusb/os/threads_windows.h",
++ "src/libusb/os/windows_common.h",
++ "src/libusb/os/windows_usb.c",
++ "src/libusb/os/windows_usb.h",
++ "src/libusb/strerror.c",
++ "src/libusb/sync.c",
++ "src/libusb/version.h",
++ "src/libusb/version_nano.h",
++ "src/msvc/config.h",
++ "src/msvc/inttypes.h",
++ "src/msvc/stdint.h",
++ ]
++ deps = []
++ include_dirs = [ "src/libusb/os" ]
+
+- configs -= [ "//build/config/compiler:chromium_code" ]
+- configs += [
+- "//build/config/compiler:no_chromium_code",
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ "//build/config/compiler:no_chromium_code",
+
+- # Must be after no_chromium_code for warning flags to be ordered correctly.
+- ":libusb_warnings",
+- ]
++# Must be after no_chromium_code for warning flags to be ordered correctly.
++ ":libusb_warnings",
++ ]
+
+- public_configs = [ ":libusb_config" ]
++ public_configs = [ ":libusb_config" ]
+
+- if (is_posix) {
+- defines = [
+- "DEFAULT_VISIBILITY=",
+- "HAVE_GETTIMEOFDAY=1",
+- "HAVE_POLL_H=1",
+- "HAVE_SYS_TIME_H=1",
+- "LIBUSB_DESCRIBE=\"1.0.16\"",
+- "POLL_NFDS_TYPE=nfds_t",
+- "THREADS_POSIX=1",
+- ]
+- }
++ if (is_posix) {
++ defines = [
++ "DEFAULT_VISIBILITY=",
++ "HAVE_GETTIMEOFDAY=1",
++ "HAVE_POLL_H=1",
++ "HAVE_SYS_TIME_H=1",
++ "LIBUSB_DESCRIBE=\"1.0.16\"",
++ "POLL_NFDS_TYPE=nfds_t",
++ "THREADS_POSIX=1",
++ ]
++ }
+
+- if (is_mac) {
+- defines += [
+- "OS_DARWIN=1",
++ if (is_mac) {
++ defines += [
++ "OS_DARWIN=1",
+
+- # Needed on OSX 10.12 to silence a deprecation warning.
++# Needed on OSX 10.12 to silence a deprecation warning.
+ "OBJC_SILENCE_GC_DEPRECATIONS=1",
+- ]
+- } else {
+- sources -= [
+- "src/libusb/os/darwin_usb.c",
++ ]
++ } else {
++ sources -= [
++ "src/libusb/os/darwin_usb.c",
+ "src/libusb/os/darwin_usb.h",
+- ]
+- }
++ ]
++ }
+
+- if (is_linux) {
+- sources += [
+- "src/libusb/os/linux_usbfs.c",
++ if (is_linux) {
++ sources += [
++ "src/libusb/os/linux_usbfs.c",
+ "src/libusb/os/linux_usbfs.h",
+- ]
+- defines += [
+- "OS_LINUX=1",
++ ]
++ defines += [
++ "OS_LINUX=1",
+ "_GNU_SOURCE=1",
+- ]
+- }
++ ]
++ }
+
+- if (is_chromeos) {
+- defines += [ "USBI_TIMERFD_AVAILABLE" ]
+- }
++ if (is_chromeos) {
++ defines += [ "USBI_TIMERFD_AVAILABLE" ]
++ }
+
+- if (use_udev) {
+- sources += [ "src/libusb/os/linux_udev.cc" ]
+- defines += [
+- "HAVE_LIBUDEV=1",
+- "USE_UDEV=1",
+- ]
+- deps += [ "//build/linux/libudev" ]
+- }
++ if (use_udev) {
++ sources += [ "src/libusb/os/linux_udev.cc" ]
++ defines += [
++ "HAVE_LIBUDEV=1",
++ "USE_UDEV=1",
++ ]
++ deps += [ "//build/linux/libudev" ]
++ }
+
+- if (is_linux && !use_udev) {
+- sources += [ "src/libusb/os/linux_netlink.c" ]
+- defines += [ "HAVE_LINUX_NETLINK_H" ]
+- }
++ if (is_linux && !use_udev) {
++ sources += [ "src/libusb/os/linux_netlink.c" ]
++ defines += [ "HAVE_LINUX_NETLINK_H" ]
++ }
+
+- if (is_win) {
+- include_dirs += [ "src/msvc" ]
+- sources -= [
+- "src/libusb/os/poll_posix.c",
+- "src/libusb/os/threads_posix.c",
+- ]
+- libs = [ "setupapi.lib" ]
+- } else {
+- include_dirs += [ "src" ]
+- sources -= [
+- "src/libusb/os/poll_windows.c",
++ if (is_win) {
++ include_dirs += [ "src/msvc" ]
++ sources -= [
++ "src/libusb/os/poll_posix.c",
++ "src/libusb/os/threads_posix.c",
++ ]
++ libs = [ "setupapi.lib" ]
++ } else {
++ include_dirs += [ "src" ]
++ sources -= [
++ "src/libusb/os/poll_windows.c",
+ "src/libusb/os/poll_windows.h",
+ "src/libusb/os/threads_windows.c",
+ "src/libusb/os/threads_windows.h",
+@@ -142,6 +160,7 @@ static_library("libusb") {
+ "src/msvc/config.h",
+ "src/msvc/inttypes.h",
+ "src/msvc/stdint.h",
+- ]
++ ]
++ }
+ }
+ }
diff --git a/www/iridium/files/patch-third__party_libxml_BUILD.gn b/www/iridium/files/patch-third__party_libxml_BUILD.gn
new file mode 100644
index 000000000000..ca1f0871a73d
--- /dev/null
+++ b/www/iridium/files/patch-third__party_libxml_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/libxml/BUILD.gn.orig 2017-04-19 19:06:52 UTC
++++ third_party/libxml/BUILD.gn
+@@ -4,7 +4,7 @@
+
+ # Define an "os_include" variable that points at the OS-specific generated
+ # headers. These were generated by running the configure script offline.
+-if (is_linux || is_android || is_nacl) {
++if (is_linux || is_bsd || is_android || is_nacl) {
+ os_include = "linux"
+ } else if (is_mac || is_ios) {
+ os_include = "mac"
diff --git a/www/iridium/files/patch-third__party_libxslt_BUILD.gn b/www/iridium/files/patch-third__party_libxslt_BUILD.gn
new file mode 100644
index 000000000000..d4e07a9f4735
--- /dev/null
+++ b/www/iridium/files/patch-third__party_libxslt_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/libxslt/BUILD.gn.orig 2017-04-19 19:06:52 UTC
++++ third_party/libxslt/BUILD.gn
+@@ -82,7 +82,7 @@ static_library("libxslt") {
+ public_configs = [ ":libxslt_config" ]
+
+ cflags = []
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ include_dirs = [ "linux" ]
+ } else if (is_win) {
+ include_dirs = [ "win32" ]
diff --git a/www/iridium/files/patch-third__party_libyuv_include_libyuv_row.h b/www/iridium/files/patch-third__party_libyuv_include_libyuv_row.h
new file mode 100644
index 000000000000..08828646ff9f
--- /dev/null
+++ b/www/iridium/files/patch-third__party_libyuv_include_libyuv_row.h
@@ -0,0 +1,37 @@
+--- third_party/libyuv/include/libyuv/row.h.orig 2017-04-19 19:07:47 UTC
++++ third_party/libyuv/include/libyuv/row.h
+@@ -161,10 +161,14 @@ extern "C" {
+ #define HAS_ARGBSHADEROW_SSE2
+ #define HAS_ARGBSUBTRACTROW_SSE2
+ #define HAS_ARGBUNATTENUATEROW_SSE2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_BLENDPLANEROW_SSSE3
++#endif
+ #define HAS_COMPUTECUMULATIVESUMROW_SSE2
+ #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_INTERPOLATEROW_SSSE3
++#endif
+ #define HAS_RGBCOLORTABLEROW_X86
+ #define HAS_SOBELROW_SSE2
+ #define HAS_SOBELTOPLANEROW_SSE2
+@@ -211,7 +215,9 @@ extern "C" {
+ #define HAS_I422TORGB565ROW_AVX2
+ #define HAS_I422TORGBAROW_AVX2
+ #define HAS_I444TOARGBROW_AVX2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_INTERPOLATEROW_AVX2
++#endif
+ #define HAS_J422TOARGBROW_AVX2
+ #define HAS_MERGEUVROW_AVX2
+ #define HAS_MIRRORROW_AVX2
+@@ -234,7 +240,9 @@ extern "C" {
+ #define HAS_ARGBMULTIPLYROW_AVX2
+ #define HAS_ARGBSUBTRACTROW_AVX2
+ #define HAS_ARGBUNATTENUATEROW_AVX2
++#if !(defined(__i386__) && defined(__GNUC__))
+ #define HAS_BLENDPLANEROW_AVX2
++#endif
+
+ #if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \
+ defined(_MSC_VER)
diff --git a/www/iridium/files/patch-third__party_mesa_BUILD.gn b/www/iridium/files/patch-third__party_mesa_BUILD.gn
new file mode 100644
index 000000000000..7fd1838dbff0
--- /dev/null
+++ b/www/iridium/files/patch-third__party_mesa_BUILD.gn
@@ -0,0 +1,23 @@
+--- third_party/mesa/BUILD.gn.orig 2017-04-19 19:06:52 UTC
++++ third_party/mesa/BUILD.gn
+@@ -90,6 +90,10 @@ config("mesa_internal_config") {
+ defines += [ "_GNU_SOURCE" ]
+ }
+
++ if (is_bsd) {
++ defines += [ "_BSD_SOURCE" ]
++ }
++
+ if (is_win) {
+ defines += [
+ # Generated files use const only if __cplusplus or __STDC__ is defined.
+@@ -757,7 +761,8 @@ loadable_module("osmesa") {
+ ]
+
+ # Required for the allocator implementation, which is not used on Mac.
+- if (!is_mac) {
++ # For BSD, there's no poing to include everything.
++ if (!is_mac && !is_bsd) {
+ deps += [ "//base" ]
+ }
+
diff --git a/www/iridium/files/patch-third__party_minigbm_BUILD.gn b/www/iridium/files/patch-third__party_minigbm_BUILD.gn
new file mode 100644
index 000000000000..68ed5d26997e
--- /dev/null
+++ b/www/iridium/files/patch-third__party_minigbm_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/minigbm/BUILD.gn.orig 2017-04-19 19:06:52 UTC
++++ third_party/minigbm/BUILD.gn
+@@ -4,7 +4,7 @@
+
+ import("//build/config/linux/pkg_config.gni")
+
+-assert(is_linux)
++assert(is_linux || is_bsd)
+
+ declare_args() {
+ # Controls whether the build should use the version of minigbm library
diff --git a/www/iridium/files/patch-third__party_node_node.py b/www/iridium/files/patch-third__party_node_node.py
new file mode 100644
index 000000000000..0cae32db5058
--- /dev/null
+++ b/www/iridium/files/patch-third__party_node_node.py
@@ -0,0 +1,10 @@
+--- third_party/node/node.py.orig 2017-04-19 19:06:52 UTC
++++ third_party/node/node.py
+@@ -12,6 +12,7 @@ import sys
+ def GetBinaryPath():
+ return os_path.join(os_path.dirname(__file__), *{
+ 'Darwin': ('mac', 'node-darwin-x64', 'bin', 'node'),
++ 'FreeBSD': ('linux', 'node-linux-x64', 'bin', 'node'),
+ 'Linux': ('linux', 'node-linux-x64', 'bin', 'node'),
+ 'Windows': ('win', 'node.exe'),
+ }[platform.system()])
diff --git a/www/iridium/files/patch-third__party_opus_BUILD.gn b/www/iridium/files/patch-third__party_opus_BUILD.gn
new file mode 100644
index 000000000000..f15683ab5cb8
--- /dev/null
+++ b/www/iridium/files/patch-third__party_opus_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/opus/BUILD.gn.orig 2017-04-19 19:06:52 UTC
++++ third_party/opus/BUILD.gn
+@@ -14,7 +14,7 @@ use_opus_arm_optimization = current_cpu
+ # If OPUS Run Time CPU Detections (RTCD) shall be used.
+ # Based on the conditions in celt/arm/armcpu.c:
+ # defined(_MSC_VER) || defined(__linux__).
+-use_opus_rtcd = current_cpu == "arm" && (is_win || is_android || is_linux)
++use_opus_rtcd = current_cpu == "arm" && (is_win || is_android || is_linux || is_bsd)
+
+ config("opus_config") {
+ include_dirs = [ "src/include" ]
diff --git a/www/iridium/files/patch-third__party_ots_include_opentype-sanitiser.h b/www/iridium/files/patch-third__party_ots_include_opentype-sanitiser.h
new file mode 100644
index 000000000000..295e94d48c37
--- /dev/null
+++ b/www/iridium/files/patch-third__party_ots_include_opentype-sanitiser.h
@@ -0,0 +1,10 @@
+--- third_party/ots/include/opentype-sanitiser.h.orig 2017-04-19 19:06:52 UTC
++++ third_party/ots/include/opentype-sanitiser.h
+@@ -22,6 +22,7 @@ typedef unsigned __int64 uint64_t;
+ #else
+ #include <arpa/inet.h>
+ #include <stdint.h>
++#include <sys/types.h>
+ #endif
+
+ #include <algorithm>
diff --git a/www/iridium/files/patch-third__party_pdfium_BUILD.gn b/www/iridium/files/patch-third__party_pdfium_BUILD.gn
new file mode 100644
index 000000000000..b14844a92bb9
--- /dev/null
+++ b/www/iridium/files/patch-third__party_pdfium_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/pdfium/BUILD.gn.orig 2017-04-19 19:07:49 UTC
++++ third_party/pdfium/BUILD.gn
+@@ -65,7 +65,7 @@ config("pdfium_core_config") {
+ cflags = []
+ configs = [ ":pdfium_common_config" ]
+ defines = [ "V8_DEPRECATION_WARNINGS" ]
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ if (current_cpu == "x64") {
+ defines += [ "_FX_CPU_=_FX_X64_" ]
+ cflags += [ "-fPIC" ]
diff --git a/www/iridium/files/patch-third__party_pdfium_core_fxcrt_fx__system.h b/www/iridium/files/patch-third__party_pdfium_core_fxcrt_fx__system.h
new file mode 100644
index 000000000000..582042a88fee
--- /dev/null
+++ b/www/iridium/files/patch-third__party_pdfium_core_fxcrt_fx__system.h
@@ -0,0 +1,11 @@
+--- third_party/pdfium/core/fxcrt/fx_system.h.orig 2017-04-19 19:07:50 UTC
++++ third_party/pdfium/core/fxcrt/fx_system.h
+@@ -40,7 +40,7 @@
+ #elif defined(_WIN64)
+ #define _FX_OS_ _FX_WIN64_DESKTOP_
+ #define _FXM_PLATFORM_ _FXM_PLATFORM_WINDOWS_
+-#elif defined(__linux__)
++#elif defined(__linux__) || defined(__FreeBSD__)
+ #define _FX_OS_ _FX_LINUX_DESKTOP_
+ #define _FXM_PLATFORM_ _FXM_PLATFORM_LINUX_
+ #elif defined(__APPLE__)
diff --git a/www/iridium/files/patch-third__party_pdfium_fpdfsdk_javascript_JS__Value.cpp b/www/iridium/files/patch-third__party_pdfium_fpdfsdk_javascript_JS__Value.cpp
new file mode 100644
index 000000000000..70a7add9e253
--- /dev/null
+++ b/www/iridium/files/patch-third__party_pdfium_fpdfsdk_javascript_JS__Value.cpp
@@ -0,0 +1,28 @@
+--- third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp.orig 2017-04-19 19:07:50 UTC
++++ third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp
+@@ -457,11 +457,12 @@ v8::Local<v8::Date> CJS_Date::ToV8Date(C
+ }
+
+ double _getLocalTZA() {
++ struct tm *lt;
+ if (!FSDK_IsSandBoxPolicyEnabled(FPDF_POLICY_MACHINETIME_ACCESS))
+ return 0;
+ time_t t = 0;
+ time(&t);
+- localtime(&t);
++ lt = localtime(&t);
+ #if _MSC_VER >= 1900
+ // In gcc and in Visual Studio prior to VS 2015 'timezone' is a global
+ // variable declared in time.h. That variable was deprecated and in VS 2015
+@@ -469,7 +470,11 @@ double _getLocalTZA() {
+ long timezone = 0;
+ _get_timezone(&timezone);
+ #endif
++#if defined(__FreeBSD__)
++ return (double)(-(lt->tm_gmtoff * 1000));
++#else
+ return (double)(-(timezone * 1000));
++#endif
+ }
+
+ int _getDaylightSavingTA(double d) {
diff --git a/www/iridium/files/patch-third__party_pdfium_fpdfsdk_javascript_PublicMethods.cpp b/www/iridium/files/patch-third__party_pdfium_fpdfsdk_javascript_PublicMethods.cpp
new file mode 100644
index 000000000000..495f6870a690
--- /dev/null
+++ b/www/iridium/files/patch-third__party_pdfium_fpdfsdk_javascript_PublicMethods.cpp
@@ -0,0 +1,106 @@
+--- third_party/pdfium/fpdfsdk/javascript/PublicMethods.cpp.orig 2017-04-19 19:07:50 UTC
++++ third_party/pdfium/fpdfsdk/javascript/PublicMethods.cpp
+@@ -68,6 +68,103 @@ const FX_WCHAR* const fullmonths[] = {L"
+ L"July", L"August", L"September",
+ L"October", L"November", L"December"};
+
++#if defined(__FreeBSD__)
++/*
++ * cvt.c - IEEE floating point formatting routines for FreeBSD
++ * from GNU libc-4.6.27
++ */
++
++/*
++ * ap_ecvt converts to decimal
++ * the number of digits is specified by ndigit
++ * decpt is set to the position of the decimal point
++ * sign is set to 0 for positive, 1 for negative
++ */
++
++#define NDIG 80
++
++static char *
++ ap_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag)
++{
++ register int r2;
++ double fi, fj;
++ register char *p, *p1;
++ static char buf[NDIG];
++
++ if (ndigits >= NDIG - 1)
++ ndigits = NDIG - 2;
++ r2 = 0;
++ *sign = 0;
++ p = &buf[0];
++ if (arg < 0) {
++ *sign = 1;
++ arg = -arg;
++ }
++ arg = modf(arg, &fi);
++ p1 = &buf[NDIG];
++ /*
++ * Do integer part
++ */
++ if (fi != 0) {
++ p1 = &buf[NDIG];
++ while (fi != 0) {
++ fj = modf(fi / 10, &fi);
++ *--p1 = (int) ((fj + .03) * 10) + '0';
++ r2++;
++ }
++ while (p1 < &buf[NDIG])
++ *p++ = *p1++;
++ }
++ else if (arg > 0) {
++ while ((fj = arg * 10) < 1) {
++ arg = fj;
++ r2--;
++ }
++ }
++ p1 = &buf[ndigits];
++ if (eflag == 0)
++ p1 += r2;
++ *decpt = r2;
++ if (p1 < &buf[0]) {
++ buf[0] = '\0';
++ return (buf);
++ }
++ while (p <= p1 && p < &buf[NDIG]) {
++ arg *= 10;
++ arg = modf(arg, &fj);
++ *p++ = (int) fj + '0';
++ }
++ if (p1 >= &buf[NDIG]) {
++ buf[NDIG - 1] = '\0';
++ return (buf);
++ }
++ p = p1;
++ *p1 += 5;
++ while (*p1 > '9') {
++ *p1 = '0';
++ if (p1 > buf)
++ ++ * --p1;
++ else {
++ *p1 = '1';
++ (*decpt)++;
++ if (eflag == 0) {
++ if (p > buf)
++ *p = '0';
++ p++;
++ }
++ }
++ }
++ *p = '\0';
++ return (buf);
++}
++
++static char *
++ fcvt(double arg, int ndigits, int *decpt, int *sign)
++{
++ return (ap_cvt(arg, ndigits, decpt, sign, 0));
++}
++#endif // defined(__FreeBSD__)
++
+ CFX_ByteString StrTrim(const CFX_ByteString& pStr) {
+ CFX_ByteString result(pStr);
+ result.TrimLeft(' ');
diff --git a/www/iridium/files/patch-third__party_pdfium_skia_BUILD.gn b/www/iridium/files/patch-third__party_pdfium_skia_BUILD.gn
new file mode 100644
index 000000000000..1e14e84e7998
--- /dev/null
+++ b/www/iridium/files/patch-third__party_pdfium_skia_BUILD.gn
@@ -0,0 +1,29 @@
+--- third_party/pdfium/skia/BUILD.gn.orig 2017-04-19 19:07:50 UTC
++++ third_party/pdfium/skia/BUILD.gn
+@@ -102,7 +102,7 @@ config("skia_library_config") {
+ }
+
+ # Settings for text blitting, chosen to approximate the system browser.
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ defines += [
+ "SK_GAMMA_EXPONENT=1.2",
+ "SK_GAMMA_CONTRAST=0.2",
+@@ -280,7 +280,7 @@ component("skia") {
+ "//third_party/skia/src/ports/SkFontMgr_android_parser.cpp",
+ ]
+ }
+- if (!is_linux && !is_android && !is_win && !is_mac) {
++ if (!is_linux && !is_android && !is_win && !is_mac || !is_bsd) {
+ sources -= [
+ "//third_party/skia/src/ports/SkFontHost_FreeType.cpp",
+ "//third_party/skia/src/ports/SkFontHost_FreeType_common.cpp",
+@@ -309,7 +309,7 @@ component("skia") {
+ "../third_party:fx_zlib",
+ ]
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ deps += [ "//third_party/icu:icuuc" ]
+ }
+
diff --git a/www/iridium/files/patch-third__party_pdfium_third__party_base_logging.h b/www/iridium/files/patch-third__party_pdfium_third__party_base_logging.h
new file mode 100644
index 000000000000..1dbb5dcc61e3
--- /dev/null
+++ b/www/iridium/files/patch-third__party_pdfium_third__party_base_logging.h
@@ -0,0 +1,11 @@
+--- third_party/pdfium/third_party/base/logging.h.orig 2017-04-19 19:07:50 UTC
++++ third_party/pdfium/third_party/base/logging.h
+@@ -10,7 +10,7 @@
+
+ #ifndef _WIN32
+ #define NULL_DEREF_IF_POSSIBLE \
+- *(reinterpret_cast<volatile char*>(NULL) + 42) = 0x42;
++ *(reinterpret_cast<volatile char*>(__null) + 42) = 0x42;
+ #else
+ #define NULL_DEREF_IF_POSSIBLE
+ #endif
diff --git a/www/iridium/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h b/www/iridium/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
new file mode 100644
index 000000000000..b450ecfb8e17
--- /dev/null
+++ b/www/iridium/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h
@@ -0,0 +1,11 @@
+--- third_party/skia/src/gpu/GrAutoLocaleSetter.h.orig 2017-04-19 19:07:51 UTC
++++ third_party/skia/src/gpu/GrAutoLocaleSetter.h
+@@ -25,7 +25,7 @@
+ #define HAVE_XLOCALE 0
+ #endif
+
+-#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION)
++#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) || defined(__FreeBSD__)
+ #define HAVE_LOCALE_T 0
+ #else
+ #define HAVE_LOCALE_T 1
diff --git a/www/iridium/files/patch-third__party_sqlite_BUILD.gn b/www/iridium/files/patch-third__party_sqlite_BUILD.gn
new file mode 100644
index 000000000000..ca83cf293643
--- /dev/null
+++ b/www/iridium/files/patch-third__party_sqlite_BUILD.gn
@@ -0,0 +1,47 @@
+--- third_party/sqlite/BUILD.gn.orig 2017-04-19 19:06:52 UTC
++++ third_party/sqlite/BUILD.gn
+@@ -22,7 +22,7 @@ if (!use_system_sqlite) {
+ # sqlite3Fts3InitTok).
+ cflags += [ "-Wno-unused-function" ]
+ }
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ cflags += [
+ # SQLite doesn"t believe in compiler warnings,
+ # preferring testing.
+@@ -150,7 +150,7 @@ if (!use_system_sqlite) {
+ ":sqlite_warnings",
+ ]
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ libs = [ "dl" ]
+ } else if (is_mac || is_ios) {
+ libs = [
+@@ -187,7 +187,7 @@ if (!use_system_sqlite) {
+ public_configs = [ ":sqlite_export" ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ executable("sqlite_shell") {
+ # So shell.c can find the correct sqlite3.h.
+ include_dirs = [ "amalgamation" ]
+@@ -216,7 +216,7 @@ if (use_system_sqlite) {
+
+ config("sqlite_config") {
+ defines = [ "USE_SYSTEM_SQLITE" ]
+- if (is_ios) {
++ if (is_ios || is_bsd) {
+ libs = [ "sqlite3" ]
+ } else {
+ assert(false, "extra flags to use system sqlite3 library missing")
+@@ -235,7 +235,7 @@ if (use_system_sqlite) {
+ }
+ }
+
+- if (is_ios) {
++ if (is_ios || is_bsd) {
+ source_set("sqlite_recover") {
+ sources = [
+ # TODO(shess): Move out of the SQLite source tree, perhaps to ext/.
diff --git a/www/iridium/files/patch-third__party_usrsctp_BUILD.gn b/www/iridium/files/patch-third__party_usrsctp_BUILD.gn
new file mode 100644
index 000000000000..813dff51f54b
--- /dev/null
+++ b/www/iridium/files/patch-third__party_usrsctp_BUILD.gn
@@ -0,0 +1,15 @@
+--- third_party/usrsctp/BUILD.gn.orig 2017-04-19 19:06:53 UTC
++++ third_party/usrsctp/BUILD.gn
+@@ -112,6 +112,12 @@ static_library("usrsctp") {
+ "__Userspace_os_Linux",
+ "_GNU_SOURCE",
+ ]
++ } else if (is_bsd) {
++ # For now, freebsd hard coding, differentiate different bsd is a plan
++ defines += [
++ "__Userspace_os_FreeBSD",
++ ]
++ cflags += [ "-U__FreeBSD__" ]
+ } else if (is_mac || is_ios) {
+ defines += [
+ "HAVE_SA_LEN",
diff --git a/www/iridium/files/patch-third__party_webrtc_BUILD.gn b/www/iridium/files/patch-third__party_webrtc_BUILD.gn
new file mode 100644
index 000000000000..f6ec0e7531fe
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_BUILD.gn
@@ -0,0 +1,12 @@
+--- third_party/webrtc/BUILD.gn.orig 2017-04-19 19:07:52 UTC
++++ third_party/webrtc/BUILD.gn
+@@ -59,6 +59,9 @@ config("common_inherited_config") {
+ if (is_linux) {
+ defines += [ "WEBRTC_LINUX" ]
+ }
++ if (is_bsd) {
++ defines += [ "WEBRTC_LINUX", "WEBRTC_BSD", "WEBRTC_THREAD_RR" ]
++ }
+ if (is_mac) {
+ defines += [ "WEBRTC_MAC" ]
+ }
diff --git a/www/iridium/files/patch-third__party_webrtc_base_BUILD.gn b/www/iridium/files/patch-third__party_webrtc_base_BUILD.gn
new file mode 100644
index 000000000000..3af4a959006c
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_base_BUILD.gn
@@ -0,0 +1,18 @@
+--- third_party/webrtc/base/BUILD.gn.orig 2017-04-19 19:07:52 UTC
++++ third_party/webrtc/base/BUILD.gn
+@@ -566,7 +566,6 @@ rtc_static_library("rtc_base") {
+
+ if (use_x11) {
+ libs += [
+- "dl",
+ "rt",
+ "Xext",
+ "X11",
+@@ -577,7 +576,6 @@ rtc_static_library("rtc_base") {
+
+ if (is_linux) {
+ libs += [
+- "dl",
+ "rt",
+ ]
+ }
diff --git a/www/iridium/files/patch-third__party_webrtc_base_httpcommon.cc b/www/iridium/files/patch-third__party_webrtc_base_httpcommon.cc
new file mode 100644
index 000000000000..3db8b5ed937c
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_base_httpcommon.cc
@@ -0,0 +1,11 @@
+--- third_party/webrtc/base/httpcommon.cc.orig 2017-04-19 19:07:52 UTC
++++ third_party/webrtc/base/httpcommon.cc
+@@ -384,7 +384,7 @@ bool HttpDateToSeconds(const std::string
+ gmt = non_gmt + kTimeZoneOffsets[zindex] * 60 * 60;
+ }
+ // TODO: Android should support timezone, see b/2441195
+-#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID) || defined(BSD)
++#if defined(WEBRTC_MAC) && !defined(WEBRTC_IOS) || defined(WEBRTC_ANDROID) || defined(WEBRTC_BSD)
+ tm *tm_for_timezone = localtime(&gmt);
+ *seconds = gmt + tm_for_timezone->tm_gmtoff;
+ #else
diff --git a/www/iridium/files/patch-third__party_webrtc_base_ifaddrs__converter.h b/www/iridium/files/patch-third__party_webrtc_base_ifaddrs__converter.h
new file mode 100644
index 000000000000..7328dd9721e2
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_base_ifaddrs__converter.h
@@ -0,0 +1,11 @@
+--- third_party/webrtc/base/ifaddrs_converter.h.orig 2017-04-19 19:07:52 UTC
++++ third_party/webrtc/base/ifaddrs_converter.h
+@@ -14,6 +14,8 @@
+ #if defined(WEBRTC_ANDROID)
+ #include "webrtc/base/ifaddrs-android.h"
+ #else
++#include <sys/types.h>
++#include <sys/socket.h>
+ #include <ifaddrs.h>
+ #endif // WEBRTC_ANDROID
+
diff --git a/www/iridium/files/patch-third__party_webrtc_base_ipaddress.h b/www/iridium/files/patch-third__party_webrtc_base_ipaddress.h
new file mode 100644
index 000000000000..58a6c4b13491
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_base_ipaddress.h
@@ -0,0 +1,13 @@
+--- third_party/webrtc/base/ipaddress.h.orig 2017-04-19 19:07:52 UTC
++++ third_party/webrtc/base/ipaddress.h
+@@ -17,6 +17,10 @@
+ #include <arpa/inet.h>
+ #include <netdb.h>
+ #endif
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#include <sys/socket.h>
++#endif
+ #if defined(WEBRTC_WIN)
+ #include <winsock2.h>
+ #include <ws2tcpip.h>
diff --git a/www/iridium/files/patch-third__party_webrtc_base_network.cc b/www/iridium/files/patch-third__party_webrtc_base_network.cc
new file mode 100644
index 000000000000..d98bbc965c84
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_base_network.cc
@@ -0,0 +1,29 @@
+--- third_party/webrtc/base/network.cc.orig 2017-04-19 19:07:52 UTC
++++ third_party/webrtc/base/network.cc
+@@ -14,7 +14,7 @@
+ // linux/if.h can't be included at the same time as the posix sys/if.h, and
+ // it's transitively required by linux/route.h, so include that version on
+ // linux instead of the standard posix one.
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ #include <linux/if.h>
+ #include <linux/route.h>
+ #elif !defined(__native_client__)
+@@ -658,7 +658,7 @@ bool BasicNetworkManager::CreateNetworks
+ }
+ #endif // WEBRTC_WIN
+
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ bool IsDefaultRoute(const std::string& network_name) {
+ FileStream fs;
+ if (!fs.Open("/proc/net/route", "r", nullptr)) {
+@@ -701,7 +701,7 @@ bool BasicNetworkManager::IsIgnoredNetwo
+ strncmp(network.name().c_str(), "vboxnet", 7) == 0) {
+ return true;
+ }
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD)
+ // Make sure this is a default route, if we're ignoring non-defaults.
+ if (ignore_non_default_routes_ && !IsDefaultRoute(network.name())) {
+ return true;
diff --git a/www/iridium/files/patch-third__party_webrtc_base_network.h b/www/iridium/files/patch-third__party_webrtc_base_network.h
new file mode 100644
index 000000000000..48246d7e249a
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_base_network.h
@@ -0,0 +1,13 @@
+--- third_party/webrtc/base/network.h.orig 2017-04-19 19:07:52 UTC
++++ third_party/webrtc/base/network.h
+@@ -24,6 +24,10 @@
+ #include "webrtc/base/messagehandler.h"
+ #include "webrtc/base/sigslot.h"
+
++#if defined(WEBRTC_BSD)
++#include <sys/types.h>
++#endif
++
+ #if defined(WEBRTC_POSIX)
+ struct ifaddrs;
+ #endif // defined(WEBRTC_POSIX)
diff --git a/www/iridium/files/patch-third__party_webrtc_base_physicalsocketserver.cc b/www/iridium/files/patch-third__party_webrtc_base_physicalsocketserver.cc
new file mode 100644
index 000000000000..a0fd729a45a7
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_base_physicalsocketserver.cc
@@ -0,0 +1,45 @@
+--- third_party/webrtc/base/physicalsocketserver.cc.orig 2017-04-19 19:07:52 UTC
++++ third_party/webrtc/base/physicalsocketserver.cc
+@@ -61,7 +61,11 @@ typedef void* SockOptArg;
+
+ int64_t GetSocketRecvTimestamp(int socket) {
+ struct timeval tv_ioctl;
++#if defined(WEBRTC_BSD)
++ int ret = ioctl(socket, SO_TIMESTAMP, &tv_ioctl);
++#else
+ int ret = ioctl(socket, SIOCGSTAMP, &tv_ioctl);
++#endif
+ if (ret != 0)
+ return -1;
+ int64_t timestamp =
+@@ -302,7 +306,7 @@ int PhysicalSocket::GetOption(Option opt
+ socklen_t optlen = sizeof(*value);
+ int ret = ::getsockopt(s_, slevel, sopt, (SockOptArg)value, &optlen);
+ if (ret != -1 && opt == OPT_DONTFRAGMENT) {
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ *value = (*value != IP_PMTUDISC_DONT) ? 1 : 0;
+ #endif
+ }
+@@ -315,7 +319,7 @@ int PhysicalSocket::SetOption(Option opt
+ if (TranslateOption(opt, &slevel, &sopt) == -1)
+ return -1;
+ if (opt == OPT_DONTFRAGMENT) {
+-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD)
+ value = (value) ? IP_PMTUDISC_DO : IP_PMTUDISC_DONT;
+ #endif
+ }
+@@ -597,10 +601,10 @@ int PhysicalSocket::TranslateOption(Opti
+ *slevel = IPPROTO_IP;
+ *sopt = IP_DONTFRAGMENT;
+ break;
+-#elif defined(WEBRTC_MAC) || defined(BSD) || defined(__native_client__)
++#elif defined(WEBRTC_MAC) || defined(WEBRTC_BSD) || defined(__native_client__)
+ LOG(LS_WARNING) << "Socket::OPT_DONTFRAGMENT not supported.";
+ return -1;
+-#elif defined(WEBRTC_POSIX)
++#elif defined(WEBRTC_POSIX) && !defined(WEBRTC_BSD)
+ *slevel = IPPROTO_IP;
+ *sopt = IP_MTU_DISCOVER;
+ break;
diff --git a/www/iridium/files/patch-third__party_webrtc_base_platform__thread.cc b/www/iridium/files/patch-third__party_webrtc_base_platform__thread.cc
new file mode 100644
index 000000000000..bd2394f3265a
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_base_platform__thread.cc
@@ -0,0 +1,42 @@
+--- third_party/webrtc/base/platform_thread.cc.orig 2017-04-19 19:07:52 UTC
++++ third_party/webrtc/base/platform_thread.cc
+@@ -13,11 +13,18 @@
+ #include "webrtc/base/atomicops.h"
+ #include "webrtc/base/checks.h"
+
+-#if defined(WEBRTC_LINUX)
++#if defined(WEBRTC_LINUX) && !defined(__FreeBSD__)
+ #include <sys/prctl.h>
+ #include <sys/syscall.h>
+ #endif
+
++#if defined(WEBRTC_BSD)
++#include <pthread.h>
++#include <pthread_np.h>
++#include <sys/syscall.h>
++#include <sys/thr.h>
++#endif
++
+ namespace rtc {
+
+ PlatformThreadId CurrentThreadId() {
+@@ -27,6 +34,8 @@ PlatformThreadId CurrentThreadId() {
+ #elif defined(WEBRTC_POSIX)
+ #if defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
+ ret = pthread_mach_thread_np(pthread_self());
++#elif defined(WEBRTC_BSD)
++ ret = reinterpret_cast<int>(pthread_getthreadid_np());
+ #elif defined(WEBRTC_LINUX)
+ ret = syscall(__NR_gettid);
+ #elif defined(WEBRTC_ANDROID)
+@@ -70,7 +79,9 @@ void SetCurrentThreadName(const char* na
+ reinterpret_cast<ULONG_PTR*>(&threadname_info));
+ } __except (EXCEPTION_EXECUTE_HANDLER) {
+ }
+-#elif defined(WEBRTC_LINUX) || defined(WEBRTC_ANDROID)
++#elif defined(WEBRTC_BSD)
++ pthread_set_name_np(pthread_self(), name);
++#elif (defined(WEBRTC_LINUX) || defined(WEBRTC_ANDROID)) && !defined(WEBRTC_BSD)
+ prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name));
+ #elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
+ pthread_setname_np(name);
diff --git a/www/iridium/files/patch-third__party_webrtc_base_stringutils.h b/www/iridium/files/patch-third__party_webrtc_base_stringutils.h
new file mode 100644
index 000000000000..ee8623a11003
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_base_stringutils.h
@@ -0,0 +1,17 @@
+--- third_party/webrtc/base/stringutils.h.orig 2017-04-19 19:07:52 UTC
++++ third_party/webrtc/base/stringutils.h
+@@ -23,11 +23,11 @@
+ #endif // WEBRTC_WIN
+
+ #if defined(WEBRTC_POSIX)
+-#ifdef BSD
++#if defined(WEBRTC_BSD) || defined(BSD)
+ #include <stdlib.h>
+-#else // BSD
++#else // WEBRTC_BSD
+ #include <alloca.h>
+-#endif // !BSD
++#endif // !WEBRTC_BSD
+ #endif // WEBRTC_POSIX
+
+ #include <string>
diff --git a/www/iridium/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn b/www/iridium/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
new file mode 100644
index 000000000000..a5294906b586
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn
@@ -0,0 +1,20 @@
+--- third_party/webrtc/modules/audio_device/BUILD.gn.orig 2017-04-19 19:07:52 UTC
++++ third_party/webrtc/modules/audio_device/BUILD.gn
+@@ -82,7 +82,7 @@ rtc_static_library("audio_device") {
+ ]
+
+ include_dirs = []
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ include_dirs += [ "linux" ]
+ }
+ if (is_ios) {
+@@ -130,7 +130,7 @@ rtc_static_library("audio_device") {
+ if (rtc_use_dummy_audio_file_devices) {
+ defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ]
+ } else {
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [
+ "linux/alsasymboltable_linux.cc",
+ "linux/alsasymboltable_linux.h",
diff --git a/www/iridium/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc b/www/iridium/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
new file mode 100644
index 000000000000..5bcf67950982
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc
@@ -0,0 +1,10 @@
+--- third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc.orig 2017-04-19 19:07:53 UTC
++++ third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc
+@@ -13,6 +13,7 @@
+ #include <string.h>
+
+ #include <algorithm>
++#include <cstdlib>
+ #include <iterator>
+ #include <utility>
+
diff --git a/www/iridium/files/patch-third__party_webrtc_modules_video__coding_BUILD.gn b/www/iridium/files/patch-third__party_webrtc_modules_video__coding_BUILD.gn
new file mode 100644
index 000000000000..787581703a72
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_modules_video__coding_BUILD.gn
@@ -0,0 +1,29 @@
+--- third_party/webrtc/modules/video_coding/BUILD.gn.orig 2017-04-19 19:07:53 UTC
++++ third_party/webrtc/modules/video_coding/BUILD.gn
+@@ -154,12 +154,7 @@ rtc_static_library("webrtc_h264") {
+ }
+
+ defines = []
+- deps = [
+- ":video_coding_utility",
+- "../../base:rtc_base_approved",
+- "../../media:rtc_media_base",
+- "../../system_wrappers",
+- ]
++ deps = []
+
+ if (rtc_use_h264) {
+ defines += [ "WEBRTC_USE_H264" ]
+@@ -173,10 +168,10 @@ rtc_static_library("webrtc_h264") {
+ "codecs/h264/h264_encoder_impl.h",
+ ]
+ deps += [
+- "../../common_video",
+- "../../media:rtc_media_base",
+ "//third_party/ffmpeg:ffmpeg",
+ "//third_party/openh264:encoder",
++ "../../common_video",
++ "../../media:rtc_media_base",
+ ]
+ }
+ }
diff --git a/www/iridium/files/patch-third__party_webrtc_system__wrappers_BUILD.gn b/www/iridium/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
new file mode 100644
index 000000000000..2efac34c7c42
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_system__wrappers_BUILD.gn
@@ -0,0 +1,20 @@
+--- third_party/webrtc/system_wrappers/BUILD.gn.orig 2017-04-19 19:07:53 UTC
++++ third_party/webrtc/system_wrappers/BUILD.gn
+@@ -87,7 +87,7 @@ rtc_static_library("system_wrappers") {
+ libs += [ "log" ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ defines += [ "WEBRTC_THREAD_RR" ]
+
+ if (!build_with_chromium) {
+@@ -97,7 +97,7 @@ rtc_static_library("system_wrappers") {
+ libs += [ "rt" ]
+ }
+
+- if (is_linux || is_android) {
++ if (is_linux || is_android || is_bsd) {
+ sources += [ "source/atomic32_non_darwin_unix.cc" ]
+ }
+
diff --git a/www/iridium/files/patch-third__party_webrtc_system__wrappers_source_atomic32__non__darwin__unix.cc b/www/iridium/files/patch-third__party_webrtc_system__wrappers_source_atomic32__non__darwin__unix.cc
new file mode 100644
index 000000000000..7a5081134694
--- /dev/null
+++ b/www/iridium/files/patch-third__party_webrtc_system__wrappers_source_atomic32__non__darwin__unix.cc
@@ -0,0 +1,11 @@
+--- third_party/webrtc/system_wrappers/source/atomic32_non_darwin_unix.cc.orig 2017-04-19 19:07:53 UTC
++++ third_party/webrtc/system_wrappers/source/atomic32_non_darwin_unix.cc
+@@ -12,7 +12,7 @@
+
+ #include <assert.h>
+ #include <inttypes.h>
+-#include <malloc.h>
++#include <stdlib.h>
+
+ #include "webrtc/common_types.h"
+
diff --git a/www/iridium/files/patch-third__party_widevine_cdm_BUILD.gn b/www/iridium/files/patch-third__party_widevine_cdm_BUILD.gn
new file mode 100644
index 000000000000..3bd5319abd02
--- /dev/null
+++ b/www/iridium/files/patch-third__party_widevine_cdm_BUILD.gn
@@ -0,0 +1,29 @@
+--- third_party/widevine/cdm/BUILD.gn.orig 2017-04-19 19:06:53 UTC
++++ third_party/widevine/cdm/BUILD.gn
+@@ -26,7 +26,7 @@ if (is_android) {
+ widevine_cdm_version_h_file =
+ "chromeos/$widevine_arch/widevine_cdm_version.h"
+ widevine_cdm_binary_files = [ "chromeos/$widevine_arch/libwidevinecdm.so" ]
+- } else if (is_linux) {
++ } else if (is_linux || is_bsd) {
+ widevine_cdm_version_h_file = "linux/$widevine_arch/widevine_cdm_version.h"
+ widevine_cdm_binary_files = [ "linux/$widevine_arch/libwidevinecdm.so" ]
+ } else if (is_win) {
+@@ -165,7 +165,7 @@ if ((is_chrome_branded || enable_widevin
+ ":widevinecdm",
+ ]
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ ldflags =
+ [ rebase_path("$root_out_dir/$widevine_cdm_path/libwidevinecdm.so",
+ root_build_dir) ]
+@@ -188,7 +188,7 @@ if ((is_chrome_branded || enable_widevin
+ # This target exists for tests to depend on that pulls in a runtime dependency
+ # on the license server.
+ source_set("widevine_test_license_server") {
+- if (is_chrome_branded && is_linux) {
++ if (is_chrome_branded && is_linux || is_bsd) {
+ deps = [
+ # TODO(jrummell)
+ # This target should be removed and targets should have data_deps on this target:
diff --git a/www/iridium/files/patch-third__party_yasm_BUILD.gn b/www/iridium/files/patch-third__party_yasm_BUILD.gn
new file mode 100644
index 000000000000..11a2eabd708f
--- /dev/null
+++ b/www/iridium/files/patch-third__party_yasm_BUILD.gn
@@ -0,0 +1,16 @@
+--- third_party/yasm/BUILD.gn.orig 2017-04-19 19:06:53 UTC
++++ third_party/yasm/BUILD.gn
+@@ -32,7 +32,12 @@ import("//build/config/compiler/compiler
+ if (current_toolchain == host_toolchain) {
+ # Various files referenced by multiple targets.
+ yasm_gen_include_dir = "$target_gen_dir/include"
+- config_makefile = "source/config/$host_os/Makefile"
++ # HACK for All BSD derivatives use openbsd include directory
++ if (is_bsd) {
++ config_makefile = "source/config/openbsd/Makefile"
++ } else {
++ config_makefile = "source/config/$host_os/Makefile"
++ }
+ version_file = "version.mac"
+
+ import("//build/compiled_action.gni")
diff --git a/www/iridium/files/patch-third__party_zlib_BUILD.gn b/www/iridium/files/patch-third__party_zlib_BUILD.gn
new file mode 100644
index 000000000000..f34a2225b201
--- /dev/null
+++ b/www/iridium/files/patch-third__party_zlib_BUILD.gn
@@ -0,0 +1,11 @@
+--- third_party/zlib/BUILD.gn.orig 2017-04-19 19:06:53 UTC
++++ third_party/zlib/BUILD.gn
+@@ -115,7 +115,7 @@ static_library("minizip") {
+ "contrib/minizip/iowin32.h",
+ ]
+ }
+- if (is_mac || is_ios || is_android) {
++ if (is_mac || is_ios || is_android || is_bsd) {
+ # Mac, Android and the BSDs don't have fopen64, ftello64, or fseeko64. We
+ # use fopen, ftell, and fseek instead on these systems.
+ defines = [ "USE_FILE32API" ]
diff --git a/www/iridium/files/patch-tools_battor__agent_BUILD.gn b/www/iridium/files/patch-tools_battor__agent_BUILD.gn
new file mode 100644
index 000000000000..80c12b6d9a60
--- /dev/null
+++ b/www/iridium/files/patch-tools_battor__agent_BUILD.gn
@@ -0,0 +1,11 @@
+--- tools/battor_agent/BUILD.gn.orig 2017-04-19 19:06:54 UTC
++++ tools/battor_agent/BUILD.gn
+@@ -5,7 +5,7 @@
+ import("//testing/test.gni")
+
+ # Works only on desktop platforms.
+-assert(is_win || is_linux || is_mac)
++assert(is_win || is_linux || is_bsd || is_mac)
+
+ executable("battor_agent") {
+ sources = [
diff --git a/www/iridium/files/patch-tools_gn_args.cc b/www/iridium/files/patch-tools_gn_args.cc
new file mode 100644
index 000000000000..4c9ef989b180
--- /dev/null
+++ b/www/iridium/files/patch-tools_gn_args.cc
@@ -0,0 +1,11 @@
+--- tools/gn/args.cc.orig 2017-04-19 19:06:54 UTC
++++ tools/gn/args.cc
+@@ -298,6 +298,8 @@ void Args::SetSystemVarsLocked(Scope* de
+ os = "mac";
+ #elif defined(OS_LINUX)
+ os = "linux";
++#elif defined(OS_BSD)
++ os = "bsd";
+ #elif defined(OS_ANDROID)
+ os = "android";
+ #elif defined(OS_NETBSD)
diff --git a/www/iridium/files/patch-tools_gn_bootstrap_bootstrap.py b/www/iridium/files/patch-tools_gn_bootstrap_bootstrap.py
new file mode 100644
index 000000000000..35ce7170eee0
--- /dev/null
+++ b/www/iridium/files/patch-tools_gn_bootstrap_bootstrap.py
@@ -0,0 +1,63 @@
+--- tools/gn/bootstrap/bootstrap.py.orig 2017-04-19 19:06:54 UTC
++++ tools/gn/bootstrap/bootstrap.py
+@@ -23,6 +23,7 @@ import os
+ import shutil
+ import subprocess
+ import sys
++import platform
+ import tempfile
+
+ BOOTSTRAP_DIR = os.path.dirname(os.path.abspath(__file__))
+@@ -31,8 +32,9 @@ SRC_ROOT = os.path.dirname(os.path.dirna
+
+ is_win = sys.platform.startswith('win')
+ is_linux = sys.platform.startswith('linux')
++is_bsd = platform.system().lower().endswith('bsd')
+ is_mac = sys.platform.startswith('darwin')
+-is_posix = is_linux or is_mac
++is_posix = is_linux or is_mac or is_bsd
+
+ def check_call(cmd, **kwargs):
+ logging.debug('Running: %s', ' '.join(cmd))
+@@ -624,6 +626,41 @@ def write_gn_ninja(path, root_gen_dir, o
+ 'base/third_party/libevent/epoll.c',
+ ])
+
++ if is_bsd:
++ libs.extend(['-lexecinfo', '-lkvm'])
++ ldflags.extend(['-pthread'])
++
++ static_libraries['xdg_user_dirs'] = {
++ 'sources': [
++ 'base/third_party/xdg_user_dirs/xdg_user_dir_lookup.cc',
++ ],
++ 'tool': 'cxx',
++ }
++ static_libraries['base']['sources'].extend([
++ 'base/allocator/allocator_shim.cc',
++ 'base/allocator/allocator_shim_default_dispatch_to_glibc.cc',
++ 'base/callback_helpers.cc',
++ 'base/memory/shared_memory_posix.cc',
++ 'base/nix/xdg_util.cc',
++ 'base/process/memory_stubs.cc',
++ #'base/process/internal_linux.cc',
++ 'base/process/process_handle_' + platform.system().lower() + '.cc',
++ 'base/process/process_iterator_' + platform.system().lower() + '.cc',
++ # 'base/process/process_linux.cc',
++ 'base/process/process_metrics_'+ platform.system().lower() + '.cc',
++ 'base/strings/sys_string_conversions_posix.cc',
++ 'base/sys_info_' + platform.system().lower() + '.cc',
++ 'base/threading/platform_thread_' + platform.system().lower() + '.cc',
++ # 'base/trace_event/malloc_dump_provider.cc',
++ ])
++ static_libraries['libevent']['include_dirs'].extend([
++ os.path.join(SRC_ROOT, 'base', 'third_party', 'libevent', 'freebsd')
++ ])
++ static_libraries['libevent']['sources'].extend([
++ 'base/third_party/libevent/kqueue.c',
++ ])
++ # Suppressing warnings
++ cflags.extend(['-Wno-deprecated-register', '-Wno-parentheses-equality'])
+
+ if is_mac:
+ static_libraries['base']['sources'].extend([
diff --git a/www/iridium/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn b/www/iridium/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
new file mode 100644
index 000000000000..8db977712a7c
--- /dev/null
+++ b/www/iridium/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn
@@ -0,0 +1,11 @@
+--- tools/perf/chrome_telemetry_build/BUILD.gn.orig 2017-04-19 19:06:54 UTC
++++ tools/perf/chrome_telemetry_build/BUILD.gn
+@@ -93,7 +93,7 @@ group("telemetry_chrome_test") {
+ data_deps += [ "//chrome:reorder_imports" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ data_deps += [ "//breakpad:dump_syms($host_toolchain)" ]
+ }
+
diff --git a/www/iridium/files/patch-tools_variations_fieldtrial__to__struct.py b/www/iridium/files/patch-tools_variations_fieldtrial__to__struct.py
new file mode 100644
index 000000000000..2385c7f73d0f
--- /dev/null
+++ b/www/iridium/files/patch-tools_variations_fieldtrial__to__struct.py
@@ -0,0 +1,11 @@
+--- tools/variations/fieldtrial_to_struct.py.orig 2017-04-19 19:06:54 UTC
++++ tools/variations/fieldtrial_to_struct.py
+@@ -116,7 +116,7 @@ def main(arguments):
+ if not opts.platform:
+ parser.error('You must specify a --platform.')
+
+- supported_platforms = ['android', 'chromeos', 'ios', 'linux', 'mac', 'win']
++ supported_platforms = ['android', 'chromeos', 'ios', 'linux', 'mac', 'win', 'bsd']
+ if opts.platform not in supported_platforms:
+ parser.error('\'%s\' is an unknown platform. Supported platforms: %s' %
+ (opts.platform, supported_platforms))
diff --git a/www/iridium/files/patch-ui_accessibility_platform_ax__platform__node.h b/www/iridium/files/patch-ui_accessibility_platform_ax__platform__node.h
new file mode 100644
index 000000000000..801c06f915bc
--- /dev/null
+++ b/www/iridium/files/patch-ui_accessibility_platform_ax__platform__node.h
@@ -0,0 +1,11 @@
+--- ui/accessibility/platform/ax_platform_node.h.orig 2017-04-19 19:06:54 UTC
++++ ui/accessibility/platform/ax_platform_node.h
+@@ -22,7 +22,7 @@
+ #define PLATFORM_HAS_AX_PLATFORM_NODE_IMPL 1
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_X11)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && defined(USE_X11)
+ #define PLATFORM_HAS_AX_PLATFORM_NODE_IMPL 1
+ #endif
+
diff --git a/www/iridium/files/patch-ui_app__list_app__list__constants.cc b/www/iridium/files/patch-ui_app__list_app__list__constants.cc
new file mode 100644
index 000000000000..8342c354919d
--- /dev/null
+++ b/www/iridium/files/patch-ui_app__list_app__list__constants.cc
@@ -0,0 +1,11 @@
+--- ui/app_list/app_list_constants.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/app_list/app_list_constants.cc
+@@ -140,7 +140,7 @@ const char kSearchQueryLength[] = "Apps.
+ const char kSearchResultDistanceFromOrigin[] =
+ "Apps.AppListSearchResultDistanceFromOrigin";
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ #if defined(GOOGLE_CHROME_BUILD)
+ const char kAppListWMClass[] = "chrome_app_list";
+ #else // CHROMIUM_BUILD
diff --git a/www/iridium/files/patch-ui_app__list_app__list__constants.h b/www/iridium/files/patch-ui_app__list_app__list__constants.h
new file mode 100644
index 000000000000..0eae8007079a
--- /dev/null
+++ b/www/iridium/files/patch-ui_app__list_app__list__constants.h
@@ -0,0 +1,13 @@
+--- ui/app_list/app_list_constants.h.orig 2017-04-19 19:06:54 UTC
++++ ui/app_list/app_list_constants.h
+@@ -89,8 +89,8 @@ APP_LIST_EXPORT extern const char kSearc
+ APP_LIST_EXPORT extern const char kSearchQueryLength[];
+ APP_LIST_EXPORT extern const char kSearchResultDistanceFromOrigin[];
+
+-#if defined(OS_LINUX)
+-// The WM_CLASS name for the app launcher window on Linux.
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
++// The WM_CLASS name for the app launcher window on Linux/FreeBSD.
+ APP_LIST_EXPORT extern const char kAppListWMClass[];
+ #endif
+
diff --git a/www/iridium/files/patch-ui_app__list_views_app__list__item__view.cc b/www/iridium/files/patch-ui_app__list_views_app__list__item__view.cc
new file mode 100644
index 000000000000..8fff20be1613
--- /dev/null
+++ b/www/iridium/files/patch-ui_app__list_views_app__list__item__view.cc
@@ -0,0 +1,11 @@
+--- ui/app_list/views/app_list_item_view.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/app_list/views/app_list_item_view.cc
+@@ -55,7 +55,7 @@ gfx::FontList GetFontList() {
+ const gfx::FontList& font_list = rb.GetFontList(kItemTextFontStyle);
+ // The font is different on each platform. The font size is adjusted on some
+ // platforms to keep a consistent look.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) && defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Reducing the font size by 2 makes it the same as the Windows font size.
+ const int kFontSizeDelta = -2;
+ return font_list.DeriveWithSizeDelta(kFontSizeDelta);
diff --git a/www/iridium/files/patch-ui_aura_BUILD.gn b/www/iridium/files/patch-ui_aura_BUILD.gn
new file mode 100644
index 000000000000..8167b4b52343
--- /dev/null
+++ b/www/iridium/files/patch-ui_aura_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/aura/BUILD.gn.orig 2017-04-19 19:06:54 UTC
++++ ui/aura/BUILD.gn
+@@ -369,7 +369,7 @@ test("aura_unittests") {
+ "//ui/gl:test_support",
+ ]
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ deps += [ "//third_party/mesa" ]
+ }
+
diff --git a/www/iridium/files/patch-ui_base_BUILD.gn b/www/iridium/files/patch-ui_base_BUILD.gn
new file mode 100644
index 000000000000..3b91873101eb
--- /dev/null
+++ b/www/iridium/files/patch-ui_base_BUILD.gn
@@ -0,0 +1,61 @@
+--- ui/base/BUILD.gn.orig 2017-04-19 19:06:54 UTC
++++ ui/base/BUILD.gn
+@@ -357,7 +357,7 @@ component("base") {
+ sources += [ "touch/touch_device_android.cc" ]
+ } else if (is_ios) {
+ sources += [ "touch/touch_device_ios.cc" ]
+- } else if (is_linux) {
++ } else if (is_linux || is_bsd) {
+ sources += [ "touch/touch_device_linux.cc" ]
+ } else {
+ # Empty implementation for all other cases.
+@@ -467,11 +467,11 @@ component("base") {
+ ]
+ }
+
+- if (!use_aura || !is_linux) {
++ if (!use_aura || !(is_linux || is_bsd)) {
+ sources -= [ "resource/resource_bundle_auralinux.cc" ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ deps += [ "//build/linux:fontconfig" ]
+ }
+
+@@ -479,7 +479,7 @@ component("base") {
+ configs += [ "//build/config/linux:glib" ]
+ }
+
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ if (!toolkit_views && !use_aura) {
+ sources -= [
+ "dragdrop/drag_utils.cc",
+@@ -831,7 +831,7 @@ test("ui_base_unittests") {
+ "ime/win/imm32_manager_unittest.cc",
+ "ime/win/tsf_input_scope_unittest.cc",
+ ]
+- if (is_linux && use_aura && !is_chromeos) {
++ if ((is_linux || is_bsd) && use_aura && !is_chromeos) {
+ sources += [ "ime/input_method_auralinux_unittest.cc" ]
+ }
+ if (use_x11) {
+@@ -952,7 +952,7 @@ test("ui_base_unittests") {
+ ]
+ }
+
+- if (is_android || is_linux || is_mac || is_win) {
++ if (is_android || is_linux || is_bsd || is_mac || is_win) {
+ # TODO(brettw): We should be able to depend on //ui/resources:ui_test_pak
+ # instead of depending directly on the non-test .pak files, but depending
+ # on ui_test_pak seems to have no effect.
+@@ -965,7 +965,7 @@ test("ui_base_unittests") {
+ "//third_party/mesa:osmesa",
+ ]
+ }
+- if (is_linux || is_win) {
++ if (is_linux || is_bsd || is_win) {
+ data += [
+ # TODO(brettw): Remove these two lines.
+ "$root_out_dir/ui/en-US.pak",
diff --git a/www/iridium/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc b/www/iridium/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
new file mode 100644
index 000000000000..273c33fe3acb
--- /dev/null
+++ b/www/iridium/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc
@@ -0,0 +1,20 @@
+--- ui/base/dragdrop/os_exchange_data_provider_factory.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/base/dragdrop/os_exchange_data_provider_factory.cc
+@@ -8,7 +8,7 @@
+
+ #if defined(USE_X11) && !defined(OS_CHROMEOS)
+ #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #include "ui/base/dragdrop/os_exchange_data_provider_aura.h"
+ #elif defined(OS_MACOSX)
+ #include "ui/base/dragdrop/os_exchange_data_provider_builder_mac.h"
+@@ -34,7 +34,7 @@ OSExchangeDataProviderFactory::CreatePro
+
+ #if defined(USE_X11) && !defined(OS_CHROMEOS)
+ return base::MakeUnique<OSExchangeDataProviderAuraX11>();
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ return base::MakeUnique<OSExchangeDataProviderAura>();
+ #elif defined(OS_MACOSX)
+ return ui::BuildOSExchangeDataProviderMac();
diff --git a/www/iridium/files/patch-ui_base_ime_BUILD.gn b/www/iridium/files/patch-ui_base_ime_BUILD.gn
new file mode 100644
index 000000000000..f18610b808a3
--- /dev/null
+++ b/www/iridium/files/patch-ui_base_ime_BUILD.gn
@@ -0,0 +1,20 @@
+--- ui/base/ime/BUILD.gn.orig 2017-04-19 19:06:54 UTC
++++ ui/base/ime/BUILD.gn
+@@ -124,7 +124,7 @@ component("ime") {
+ "//skia",
+ ]
+
+- if (!use_aura || (!is_linux && !use_ozone)) {
++ if (!use_aura || (!(is_linux || is_bsd) && !use_ozone)) {
+ sources -= [
+ "input_method_auralinux.cc",
+ "input_method_auralinux.h",
+@@ -138,7 +138,7 @@ component("ime") {
+ ]
+ }
+
+- if (!is_chromeos && is_linux) {
++ if (!is_chromeos && (is_linux || is_bsd)) {
+ sources += [
+ "linux/text_edit_command_auralinux.cc",
+ "linux/text_edit_command_auralinux.h",
diff --git a/www/iridium/files/patch-ui_base_ime_ime__engine__handler__interface.h b/www/iridium/files/patch-ui_base_ime_ime__engine__handler__interface.h
new file mode 100644
index 000000000000..a8b2b27ab2ac
--- /dev/null
+++ b/www/iridium/files/patch-ui_base_ime_ime__engine__handler__interface.h
@@ -0,0 +1,11 @@
+--- ui/base/ime/ime_engine_handler_interface.h.orig 2017-04-19 19:06:54 UTC
++++ ui/base/ime/ime_engine_handler_interface.h
+@@ -142,7 +142,7 @@ class UI_BASE_IME_EXPORT IMEEngineHandle
+ // Hides the input view window (from API call).
+ virtual void HideInputView() = 0;
+
+-#elif defined(OS_LINUX) || defined(OS_WIN)
++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD)
+
+ // Get the id of the IME extension.
+ virtual std::string GetExtensionId() const = 0;
diff --git a/www/iridium/files/patch-ui_base_ime_input__method__factory.cc b/www/iridium/files/patch-ui_base_ime_input__method__factory.cc
new file mode 100644
index 000000000000..658d5fad65f3
--- /dev/null
+++ b/www/iridium/files/patch-ui_base_ime_input__method__factory.cc
@@ -0,0 +1,22 @@
+--- ui/base/ime/input_method_factory.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/base/ime/input_method_factory.cc
+@@ -16,7 +16,8 @@
+ #include "ui/base/ime/input_method_win.h"
+ #elif defined(OS_MACOSX)
+ #include "ui/base/ime/input_method_mac.h"
+-#elif defined(USE_AURA) && defined(OS_LINUX) && defined(USE_X11)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD)) && \
++ defined(USE_X11)
+ #include "ui/base/ime/input_method_auralinux.h"
+ #elif defined(OS_ANDROID)
+ #include "ui/base/ime/input_method_android.h"
+@@ -60,7 +61,8 @@ std::unique_ptr<InputMethod> CreateInput
+ return base::MakeUnique<InputMethodWin>(delegate, widget);
+ #elif defined(OS_MACOSX)
+ return base::MakeUnique<InputMethodMac>(delegate);
+-#elif defined(USE_AURA) && defined(OS_LINUX) && defined(USE_X11)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD)) && \
++ defined(USE_X11)
+ return base::MakeUnique<InputMethodAuraLinux>(delegate);
+ #elif defined(OS_ANDROID)
+ return base::MakeUnique<InputMethodAndroid>(delegate);
diff --git a/www/iridium/files/patch-ui_base_ime_input__method__initializer.cc b/www/iridium/files/patch-ui_base_ime_input__method__initializer.cc
new file mode 100644
index 000000000000..078ebbd9dfd2
--- /dev/null
+++ b/www/iridium/files/patch-ui_base_ime_input__method__initializer.cc
@@ -0,0 +1,37 @@
+--- ui/base/ime/input_method_initializer.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/base/ime/input_method_initializer.cc
+@@ -8,14 +8,14 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "ui/base/ime/ime_bridge.h"
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ #include "base/logging.h"
+ #include "ui/base/ime/linux/fake_input_method_context_factory.h"
+ #endif
+
+ namespace {
+
+-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX)
++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ const ui::LinuxInputMethodContextFactory* g_linux_input_method_context_factory;
+ #endif
+
+@@ -38,7 +38,7 @@ void ShutdownInputMethod() {
+ void InitializeInputMethodForTesting() {
+ #if defined(OS_CHROMEOS)
+ IMEBridge::Initialize();
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ if (!g_linux_input_method_context_factory)
+ g_linux_input_method_context_factory = new FakeInputMethodContextFactory();
+ const LinuxInputMethodContextFactory* factory =
+@@ -54,7 +54,7 @@ void InitializeInputMethodForTesting() {
+ void ShutdownInputMethodForTesting() {
+ #if defined(OS_CHROMEOS)
+ IMEBridge::Shutdown();
+-#elif defined(USE_AURA) && defined(OS_LINUX)
++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD))
+ const LinuxInputMethodContextFactory* factory =
+ LinuxInputMethodContextFactory::instance();
+ CHECK(!factory || factory == g_linux_input_method_context_factory)
diff --git a/www/iridium/files/patch-ui_base_resource_resource__bundle.cc b/www/iridium/files/patch-ui_base_resource_resource__bundle.cc
new file mode 100644
index 000000000000..003e7f84f944
--- /dev/null
+++ b/www/iridium/files/patch-ui_base_resource_resource__bundle.cc
@@ -0,0 +1,20 @@
+--- ui/base/resource/resource_bundle.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/base/resource/resource_bundle.cc
+@@ -661,7 +661,7 @@ void ResourceBundle::ReloadFonts() {
+ }
+
+ ScaleFactor ResourceBundle::GetMaxScaleFactor() const {
+-#if defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ return max_scale_factor_;
+ #else
+ return GetSupportedScaleFactors().back();
+@@ -719,7 +719,7 @@ void ResourceBundle::InitSharedInstance(
+ supported_scale_factors.push_back(SCALE_FACTOR_100P);
+ }
+ #elif defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_LINUX) || \
+- defined(OS_WIN)
++ defined(OS_WIN) || defined(OS_BSD)
+ supported_scale_factors.push_back(SCALE_FACTOR_200P);
+ #endif
+ ui::SetSupportedScaleFactors(supported_scale_factors);
diff --git a/www/iridium/files/patch-ui_base_ui__features.gni b/www/iridium/files/patch-ui_base_ui__features.gni
new file mode 100644
index 000000000000..1438526c485e
--- /dev/null
+++ b/www/iridium/files/patch-ui_base_ui__features.gni
@@ -0,0 +1,8 @@
+--- ui/base/ui_features.gni.orig 2017-04-19 19:06:54 UTC
++++ ui/base/ui_features.gni
+@@ -10,4 +10,4 @@ declare_args() {
+ mac_views_browser = false
+ }
+
+-enable_hidpi = is_mac || is_win || is_linux
++enable_hidpi = is_mac || is_win || is_linux || is_bsd
diff --git a/www/iridium/files/patch-ui_base_webui_web__ui__util.cc b/www/iridium/files/patch-ui_base_webui_web__ui__util.cc
new file mode 100644
index 000000000000..f825383f6aad
--- /dev/null
+++ b/www/iridium/files/patch-ui_base_webui_web__ui__util.cc
@@ -0,0 +1,11 @@
+--- ui/base/webui/web_ui_util.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/base/webui/web_ui_util.cc
+@@ -161,7 +161,7 @@ std::string GetFontFamily() {
+
+ // TODO(dnicoara) Remove Ozone check when PlatformFont support is introduced
+ // into Ozone: crbug.com/320050
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !defined(USE_OZONE)
+ font_family = ui::ResourceBundle::GetSharedInstance().GetFont(
+ ui::ResourceBundle::BaseFont).GetFontName() + ", " + font_family;
+ #endif
diff --git a/www/iridium/files/patch-ui_compositor_BUILD.gn b/www/iridium/files/patch-ui_compositor_BUILD.gn
new file mode 100644
index 000000000000..08800abeb8f0
--- /dev/null
+++ b/www/iridium/files/patch-ui_compositor_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/compositor/BUILD.gn.orig 2017-04-19 19:06:54 UTC
++++ ui/compositor/BUILD.gn
+@@ -205,7 +205,7 @@ test("compositor_unittests") {
+ "//ui/gl",
+ "//ui/resources",
+ ]
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ deps += [ "//third_party/mesa:osmesa" ]
+ }
+ }
diff --git a/www/iridium/files/patch-ui_events_devices_x11_device__data__manager__x11.cc b/www/iridium/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
new file mode 100644
index 000000000000..0b88df77c8e6
--- /dev/null
+++ b/www/iridium/files/patch-ui_events_devices_x11_device__data__manager__x11.cc
@@ -0,0 +1,19 @@
+--- ui/events/devices/x11/device_data_manager_x11.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/events/devices/x11/device_data_manager_x11.cc
+@@ -834,6 +834,8 @@ void DeviceDataManagerX11::SetDisabledKe
+ }
+
+ void DeviceDataManagerX11::DisableDevice(int deviceid) {
++ NOTIMPLEMENTED();
++#if !defined(OS_BSD)
+ blocked_devices_.set(deviceid, true);
+ // TODO(rsadam@): Support blocking touchscreen devices.
+ std::vector<InputDevice> keyboards = GetKeyboardDevices();
+@@ -845,6 +847,7 @@ void DeviceDataManagerX11::DisableDevice
+ keyboards.erase(it);
+ DeviceDataManager::OnKeyboardDevicesUpdated(keyboards);
+ }
++#endif
+ }
+
+ void DeviceDataManagerX11::EnableDevice(int deviceid) {
diff --git a/www/iridium/files/patch-ui_events_event__switches.cc b/www/iridium/files/patch-ui_events_event__switches.cc
new file mode 100644
index 000000000000..97ce603ed348
--- /dev/null
+++ b/www/iridium/files/patch-ui_events_event__switches.cc
@@ -0,0 +1,11 @@
+--- ui/events/event_switches.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/events/event_switches.cc
+@@ -17,7 +17,7 @@ const char kEnableScrollPrediction[] = "
+ const char kCompensateForUnstablePinchZoom[] =
+ "compensate-for-unstable-pinch-zoom";
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ // Tells chrome to interpret events from these devices as touch events. Only
+ // available with XInput 2 (i.e. X server 1.8 or above). The id's of the
+ // devices can be retrieved from 'xinput list'.
diff --git a/www/iridium/files/patch-ui_events_event__switches.h b/www/iridium/files/patch-ui_events_event__switches.h
new file mode 100644
index 000000000000..a5907eb1d5f8
--- /dev/null
+++ b/www/iridium/files/patch-ui_events_event__switches.h
@@ -0,0 +1,11 @@
+--- ui/events/event_switches.h.orig 2017-04-19 19:06:54 UTC
++++ ui/events/event_switches.h
+@@ -14,7 +14,7 @@ namespace switches {
+ EVENTS_BASE_EXPORT extern const char kEnableScrollPrediction[];
+ EVENTS_BASE_EXPORT extern const char kCompensateForUnstablePinchZoom[];
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_FREEBSD)
+ EVENTS_BASE_EXPORT extern const char kTouchDevices[];
+ #endif
+
diff --git a/www/iridium/files/patch-ui_events_keycodes_dom_keycode__converter.cc b/www/iridium/files/patch-ui_events_keycodes_dom_keycode__converter.cc
new file mode 100644
index 000000000000..e2be265a4b6f
--- /dev/null
+++ b/www/iridium/files/patch-ui_events_keycodes_dom_keycode__converter.cc
@@ -0,0 +1,11 @@
+--- ui/events/keycodes/dom/keycode_converter.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/events/keycodes/dom/keycode_converter.cc
+@@ -19,7 +19,7 @@ namespace {
+ // and DOM Level 3 |code| strings.
+ #if defined(OS_WIN)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, win, code}
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, xkb, code}
+ #elif defined(OS_MACOSX)
+ #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, mac, code}
diff --git a/www/iridium/files/patch-ui_gfx_BUILD.gn b/www/iridium/files/patch-ui_gfx_BUILD.gn
new file mode 100644
index 000000000000..4f5094bc0908
--- /dev/null
+++ b/www/iridium/files/patch-ui_gfx_BUILD.gn
@@ -0,0 +1,20 @@
+--- ui/gfx/BUILD.gn.orig 2017-04-19 19:06:54 UTC
++++ ui/gfx/BUILD.gn
+@@ -383,7 +383,7 @@ component("gfx") {
+ }
+
+ # Linux.
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ deps += [ "//build/linux:fontconfig" ]
+ }
+
+@@ -592,7 +592,7 @@ static_library("test_support") {
+ "test/ui_cocoa_test_helper.mm",
+ ]
+ }
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ deps += [ "//build/linux:fontconfig" ]
+ }
+ }
diff --git a/www/iridium/files/patch-ui_gfx_canvas__skia.cc b/www/iridium/files/patch-ui_gfx_canvas__skia.cc
new file mode 100644
index 000000000000..bb9a49be08dd
--- /dev/null
+++ b/www/iridium/files/patch-ui_gfx_canvas__skia.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/canvas_skia.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/gfx/canvas_skia.cc
+@@ -201,7 +201,7 @@ void Canvas::DrawStringRectWithFlags(con
+ Range range = StripAcceleratorChars(flags, &adjusted_text);
+ bool elide_text = ((flags & NO_ELLIPSIS) == 0);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On Linux, eliding really means fading the end of the string. But only
+ // for LTR text. RTL text is still elided (on the left) with "...".
+ if (elide_text) {
diff --git a/www/iridium/files/patch-ui_gfx_font__fallback__linux.cc b/www/iridium/files/patch-ui_gfx_font__fallback__linux.cc
new file mode 100644
index 000000000000..382059b402e5
--- /dev/null
+++ b/www/iridium/files/patch-ui_gfx_font__fallback__linux.cc
@@ -0,0 +1,13 @@
+--- ui/gfx/font_fallback_linux.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/gfx/font_fallback_linux.cc
+@@ -15,6 +15,10 @@
+ #include "base/memory/ptr_util.h"
+ #include "ui/gfx/font.h"
+
++#if defined(OS_BSD)
++#include <unistd.h>
++#endif
++
+ namespace gfx {
+
+ namespace {
diff --git a/www/iridium/files/patch-ui_gfx_font__list.cc b/www/iridium/files/patch-ui_gfx_font__list.cc
new file mode 100644
index 000000000000..69cf89d0c551
--- /dev/null
+++ b/www/iridium/files/patch-ui_gfx_font__list.cc
@@ -0,0 +1,11 @@
+--- ui/gfx/font_list.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/gfx/font_list.cc
+@@ -24,7 +24,7 @@ base::LazyInstance<scoped_refptr<gfx::Fo
+ bool g_default_impl_initialized = false;
+
+ bool IsFontFamilyAvailable(const std::string& family, SkFontMgr* fontManager) {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<SkTypeface> typeface(
+ fontManager->legacyCreateTypeface(family.c_str(), SkFontStyle()));
+ return typeface;
diff --git a/www/iridium/files/patch-ui_gfx_font__render__params.h b/www/iridium/files/patch-ui_gfx_font__render__params.h
new file mode 100644
index 000000000000..2b2f51e42feb
--- /dev/null
+++ b/www/iridium/files/patch-ui_gfx_font__render__params.h
@@ -0,0 +1,18 @@
+--- ui/gfx/font_render_params.h.orig 2017-04-19 19:06:54 UTC
++++ ui/gfx/font_render_params.h
+@@ -106,13 +106,13 @@ GFX_EXPORT FontRenderParams GetFontRende
+ const FontRenderParamsQuery& query,
+ std::string* family_out);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Clears GetFontRenderParams()'s cache. Intended to be called by tests that are
+ // changing Fontconfig's configuration.
+ GFX_EXPORT void ClearFontRenderParamsCacheForTest();
+ #endif
+
+-#if defined(OS_CHROMEOS) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD)
+ // Gets the device scale factor to query the FontRenderParams.
+ GFX_EXPORT float GetFontRenderParamsDeviceScaleFactor();
+
diff --git a/www/iridium/files/patch-ui_gfx_render__text.cc b/www/iridium/files/patch-ui_gfx_render__text.cc
new file mode 100644
index 000000000000..46acc6092ef5
--- /dev/null
+++ b/www/iridium/files/patch-ui_gfx_render__text.cc
@@ -0,0 +1,46 @@
+--- ui/gfx/render_text.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/gfx/render_text.cc
+@@ -976,32 +976,33 @@ void RenderText::SetDisplayOffset(int ho
+ const int extra_content = GetContentWidth() - display_rect_.width();
+ const int cursor_width = cursor_enabled_ ? 1 : 0;
+
+- int min_offset = 0;
+- int max_offset = 0;
++ // avoid collisions with vm_map.h on FreeBSD --cmt
++ int _min_offset = 0;
++ int _max_offset = 0;
+ if (extra_content > 0) {
+ switch (GetCurrentHorizontalAlignment()) {
+ case ALIGN_LEFT:
+- min_offset = -extra_content;
++ _min_offset = -extra_content;
+ break;
+ case ALIGN_RIGHT:
+- max_offset = extra_content;
++ _max_offset = extra_content;
+ break;
+ case ALIGN_CENTER:
+ // The extra space reserved for cursor at the end of the text is ignored
+ // when centering text. So, to calculate the valid range for offset, we
+ // exclude that extra space, calculate the range, and add it back to the
+ // range (if cursor is enabled).
+- min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width;
+- max_offset = (extra_content - cursor_width) / 2;
++ _min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width;
++ _max_offset = (extra_content - cursor_width) / 2;
+ break;
+ default:
+ break;
+ }
+ }
+- if (horizontal_offset < min_offset)
+- horizontal_offset = min_offset;
+- else if (horizontal_offset > max_offset)
+- horizontal_offset = max_offset;
++ if (horizontal_offset < _min_offset)
++ horizontal_offset = _min_offset;
++ else if (horizontal_offset > _max_offset)
++ horizontal_offset = _max_offset;
+
+ cached_bounds_and_offset_valid_ = true;
+ display_offset_.set_x(horizontal_offset);
diff --git a/www/iridium/files/patch-ui_gl_BUILD.gn b/www/iridium/files/patch-ui_gl_BUILD.gn
new file mode 100644
index 000000000000..3edb9fec8900
--- /dev/null
+++ b/www/iridium/files/patch-ui_gl_BUILD.gn
@@ -0,0 +1,20 @@
+--- ui/gl/BUILD.gn.orig 2017-04-19 19:06:54 UTC
++++ ui/gl/BUILD.gn
+@@ -13,7 +13,7 @@ declare_args() {
+ enable_swiftshader = is_chrome_branded && is_win
+ }
+
+-use_egl = is_win || is_android || is_linux
++use_egl = is_win || is_android || is_linux || is_bsd
+ use_glx = use_x11 || ozone_platform_x11
+
+ if (is_android) {
+@@ -170,7 +170,7 @@ component("gl") {
+ "gl_surface_egl.h",
+ ]
+ }
+- if (is_android || is_linux) {
++ if (is_android || is_linux || is_bsd) {
+ sources += [
+ "gl_implementation_osmesa.cc",
+ "gl_implementation_osmesa.h",
diff --git a/www/iridium/files/patch-ui_gl_sync__control__vsync__provider.cc b/www/iridium/files/patch-ui_gl_sync__control__vsync__provider.cc
new file mode 100644
index 000000000000..d8da75fc7617
--- /dev/null
+++ b/www/iridium/files/patch-ui_gl_sync__control__vsync__provider.cc
@@ -0,0 +1,38 @@
+--- ui/gl/sync_control_vsync_provider.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/gl/sync_control_vsync_provider.cc
+@@ -11,7 +11,7 @@
+ #include "base/trace_event/trace_event.h"
+ #include "build/build_config.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // These constants define a reasonable range for a calculated refresh interval.
+ // Calculating refreshes out of this range will be considered a fatal error.
+ const int64_t kMinVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 400;
+@@ -26,7 +26,7 @@ const double kRelativeIntervalDifference
+ namespace gl {
+
+ SyncControlVSyncProvider::SyncControlVSyncProvider() : gfx::VSyncProvider() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // On platforms where we can't get an accurate reading on the refresh
+ // rate we fall back to the assumption that we're displaying 60 frames
+ // per second.
+@@ -39,7 +39,7 @@ SyncControlVSyncProvider::~SyncControlVS
+ void SyncControlVSyncProvider::GetVSyncParameters(
+ const UpdateVSyncCallback& callback) {
+ TRACE_EVENT0("gpu", "SyncControlVSyncProvider::GetVSyncParameters");
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::TimeTicks timebase;
+
+ // The actual clock used for the system time returned by glXGetSyncValuesOML
+@@ -155,7 +155,7 @@ void SyncControlVSyncProvider::GetVSyncP
+ last_timebase_ = timebase;
+ last_media_stream_counter_ = media_stream_counter;
+ callback.Run(timebase, last_good_interval_);
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+ }
+
+ } // namespace gl
diff --git a/www/iridium/files/patch-ui_gl_sync__control__vsync__provider.h b/www/iridium/files/patch-ui_gl_sync__control__vsync__provider.h
new file mode 100644
index 000000000000..7abf154d16a4
--- /dev/null
+++ b/www/iridium/files/patch-ui_gl_sync__control__vsync__provider.h
@@ -0,0 +1,20 @@
+--- ui/gl/sync_control_vsync_provider.h.orig 2017-04-19 19:06:54 UTC
++++ ui/gl/sync_control_vsync_provider.h
+@@ -31,7 +31,7 @@ class SyncControlVSyncProvider : public
+ virtual bool GetMscRate(int32_t* numerator, int32_t* denominator) = 0;
+
+ private:
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ base::TimeTicks last_timebase_;
+ uint64_t last_media_stream_counter_ = 0;
+ base::TimeDelta last_good_interval_;
+@@ -42,7 +42,7 @@ class SyncControlVSyncProvider : public
+ // from configuration change (monitor reconfiguration, moving windows
+ // between monitors, suspend and resume, etc.).
+ std::queue<base::TimeDelta> last_computed_intervals_;
+-#endif // defined(OS_LINUX)
++#endif // defined(OS_LINUX) || defined(OS_BSD)
+
+ DISALLOW_COPY_AND_ASSIGN(SyncControlVSyncProvider);
+ };
diff --git a/www/iridium/files/patch-ui_message__center_message__center__style.h b/www/iridium/files/patch-ui_message__center_message__center__style.h
new file mode 100644
index 000000000000..51a6c114fd47
--- /dev/null
+++ b/www/iridium/files/patch-ui_message__center_message__center__style.h
@@ -0,0 +1,11 @@
+--- ui/message_center/message_center_style.h.orig 2017-04-19 19:06:54 UTC
++++ ui/message_center/message_center_style.h
+@@ -121,7 +121,7 @@ const int kButtonHorizontalPadding = 16;
+ const int kButtonIconTopPadding = 11; // In DIPs.
+ const int kButtonIconToTitlePadding = 16; // In DIPs.
+
+-#if !defined(OS_LINUX) || defined(USE_AURA)
++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA)
+ const SkColor kButtonSeparatorColor = SkColorSetRGB(234, 234, 234);
+ const SkColor kHoveredButtonBackgroundColor = SkColorSetRGB(243, 243, 243);
+ #endif
diff --git a/www/iridium/files/patch-ui_message__center_views_message__center__button__bar.cc b/www/iridium/files/patch-ui_message__center_views_message__center__button__bar.cc
new file mode 100644
index 000000000000..7c285d5abd83
--- /dev/null
+++ b/www/iridium/files/patch-ui_message__center_views_message__center__button__bar.cc
@@ -0,0 +1,47 @@
+--- ui/message_center/views/message_center_button_bar.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/message_center/views/message_center_button_bar.cc
+@@ -95,7 +95,7 @@ MessageCenterButtonBar::MessageCenterBut
+ const base::string16& title)
+ : message_center_view_(message_center_view),
+ message_center_(message_center),
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ close_bubble_button_(NULL),
+ #endif
+ title_arrow_(NULL),
+@@ -170,7 +170,7 @@ MessageCenterButtonBar::MessageCenterBut
+ IDS_MESSAGE_CENTER_SETTINGS_BUTTON_LABEL);
+ button_container_->AddChildView(settings_button_);
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ close_bubble_button_ = new views::ImageButton(this);
+ close_bubble_button_->SetImage(
+ views::Button::STATE_NORMAL,
+@@ -232,7 +232,7 @@ void MessageCenterButtonBar::ViewVisibil
+ 0,
+ 0);
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // The close-bubble button.
+ column->AddColumn(views::GridLayout::LEADING,
+ views::GridLayout::LEADING,
+@@ -247,7 +247,7 @@ void MessageCenterButtonBar::ViewVisibil
+ layout->AddView(title_arrow_);
+ layout->AddView(notification_label_);
+ layout->AddView(button_container_);
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ layout->AddView(close_bubble_button_);
+ #endif
+ }
+@@ -316,7 +316,7 @@ void MessageCenterButtonBar::ButtonPress
+ else
+ message_center()->EnterQuietModeWithExpire(base::TimeDelta::FromDays(1));
+ quiet_mode_button_->SetToggled(message_center()->IsQuietMode());
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ } else if (sender == close_bubble_button_) {
+ message_center_view()->tray()->HideMessageCenterBubble();
+ #endif
diff --git a/www/iridium/files/patch-ui_message__center_views_message__center__button__bar.h b/www/iridium/files/patch-ui_message__center_views_message__center__button__bar.h
new file mode 100644
index 000000000000..35f4a1ade207
--- /dev/null
+++ b/www/iridium/files/patch-ui_message__center_views_message__center__button__bar.h
@@ -0,0 +1,11 @@
+--- ui/message_center/views/message_center_button_bar.h.orig 2017-04-19 19:06:54 UTC
++++ ui/message_center/views/message_center_button_bar.h
+@@ -78,7 +78,7 @@ class MessageCenterButtonBar : public vi
+ // close-on-deactivation is off. This is a tentative solution. Once pkotwicz
+ // Fixes the problem of focus-follow-mouse, close-on-deactivation will be
+ // back and this field will be removed. See crbug.com/319516.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ views::ImageButton* close_bubble_button_;
+ #endif
+
diff --git a/www/iridium/files/patch-ui_message__center_views_message__view__factory.cc b/www/iridium/files/patch-ui_message__center_views_message__view__factory.cc
new file mode 100644
index 000000000000..e0b64bbc403d
--- /dev/null
+++ b/www/iridium/files/patch-ui_message__center_views_message__view__factory.cc
@@ -0,0 +1,11 @@
+--- ui/message_center/views/message_view_factory.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/message_center/views/message_view_factory.cc
+@@ -43,7 +43,7 @@ MessageView* MessageViewFactory::Create(
+ notification_view = new NotificationView(controller, notification);
+ }
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Don't create shadows for notification toasts on Linux or CrOS.
+ if (top_level)
+ return notification_view;
diff --git a/www/iridium/files/patch-ui_message__center_views_toast__contents__view.cc b/www/iridium/files/patch-ui_message__center_views_toast__contents__view.cc
new file mode 100644
index 000000000000..04e0e58fbd64
--- /dev/null
+++ b/www/iridium/files/patch-ui_message__center_views_toast__contents__view.cc
@@ -0,0 +1,11 @@
+--- ui/message_center/views/toast_contents_view.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/message_center/views/toast_contents_view.cc
+@@ -388,7 +388,7 @@ void ToastContentsView::CreateWidget(
+ PopupAlignmentDelegate* alignment_delegate) {
+ views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP);
+ params.keep_on_top = true;
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)
+ params.opacity = views::Widget::InitParams::OPAQUE_WINDOW;
+ #else
+ params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
diff --git a/www/iridium/files/patch-ui_resources_ui__resources.grd b/www/iridium/files/patch-ui_resources_ui__resources.grd
new file mode 100644
index 000000000000..ea1581f68241
--- /dev/null
+++ b/www/iridium/files/patch-ui_resources_ui__resources.grd
@@ -0,0 +1,11 @@
+--- ui/resources/ui_resources.grd.orig 2017-04-19 19:06:54 UTC
++++ ui/resources/ui_resources.grd
+@@ -15,7 +15,7 @@
+ <!-- KEEP THESE IN ALPHABETICAL ORDER! DO NOT ADD TO RANDOM PLACES JUST
+ BECAUSE YOUR RESOURCES ARE FUNCTIONALLY RELATED OR FALL UNDER THE
+ SAME CONDITIONALS. -->
+- <if expr="is_linux and use_aura">
++ <if expr="(is_linux or is_bsd) and use_aura">
+ <structure type="chrome_scaled_image" name="IDR_AURA_CURSOR_BIG_ALIAS" file="common/pointers/alias_big.png" />
+ <structure type="chrome_scaled_image" name="IDR_AURA_CURSOR_BIG_CELL" file="common/pointers/cell_big.png" />
+ <structure type="chrome_scaled_image" name="IDR_AURA_CURSOR_BIG_COL_RESIZE" file="common/pointers/sb_h_double_arrow_big.png" />
diff --git a/www/iridium/files/patch-ui_views_BUILD.gn b/www/iridium/files/patch-ui_views_BUILD.gn
new file mode 100644
index 000000000000..e1e373e4aaf2
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_BUILD.gn
@@ -0,0 +1,20 @@
+--- ui/views/BUILD.gn.orig 2017-04-19 19:06:54 UTC
++++ ui/views/BUILD.gn
+@@ -457,7 +457,7 @@ component("views") {
+ if (use_x11 && !is_chromeos) {
+ deps += [ "//ui/display/util" ]
+ }
+- if (is_linux && !is_chromeos) {
++ if ((is_linux || is_bsd) && !is_chromeos) {
+ sources -= [ "window/window_button_order_provider.cc" ]
+ deps += [ "//ui/shell_dialogs" ]
+ } else {
+@@ -645,7 +645,7 @@ component("views") {
+ "widget/desktop_aura/desktop_window_tree_host_ozone.cc",
+ ]
+ }
+- if (is_linux) {
++ if (is_linux || is_bsd) {
+ sources += [ "style/platform_style_linux.cc" ]
+ }
+ }
diff --git a/www/iridium/files/patch-ui_views_accessibility_native__view__accessibility.h b/www/iridium/files/patch-ui_views_accessibility_native__view__accessibility.h
new file mode 100644
index 000000000000..42a38a53c1aa
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_accessibility_native__view__accessibility.h
@@ -0,0 +1,11 @@
+--- ui/views/accessibility/native_view_accessibility.h.orig 2017-04-19 19:06:54 UTC
++++ ui/views/accessibility/native_view_accessibility.h
+@@ -27,7 +27,7 @@
+ #define PLATFORM_HAS_NATIVE_VIEW_ACCESSIBILITY_IMPL 1
+ #endif
+
+-#if defined(OS_LINUX) && defined(USE_X11) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(USE_X11) && !defined(OS_CHROMEOS)
+ #define PLATFORM_HAS_NATIVE_VIEW_ACCESSIBILITY_IMPL 1
+ #endif
+
diff --git a/www/iridium/files/patch-ui_views_bubble_bubble__dialog__delegate.cc b/www/iridium/files/patch-ui_views_bubble_bubble__dialog__delegate.cc
new file mode 100644
index 000000000000..c0c37f6595ef
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_bubble_bubble__dialog__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/bubble/bubble_dialog_delegate.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/views/bubble/bubble_dialog_delegate.cc
+@@ -76,7 +76,7 @@ Widget* BubbleDialogDelegateView::Create
+ // the parent frame and let DWM handle compositing. If not, then we don't
+ // want to allow the bubble to extend the frame because it will be clipped.
+ bubble_delegate->set_adjust_if_offscreen(ui::win::IsAeroGlassEnabled());
+-#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD)
+ // Linux clips bubble windows that extend outside their parent window bounds.
+ // Mac never adjusts.
+ bubble_delegate->set_adjust_if_offscreen(false);
diff --git a/www/iridium/files/patch-ui_views_controls_label.cc b/www/iridium/files/patch-ui_views_controls_label.cc
new file mode 100644
index 000000000000..47a6cd875be2
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_controls_label.cc
@@ -0,0 +1,20 @@
+--- ui/views/controls/label.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/views/controls/label.cc
+@@ -549,7 +549,7 @@ bool Label::OnMousePressed(const ui::Mou
+ GetFocusManager()->SetFocusedView(this);
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (event.IsOnlyMiddleMouseButton() && GetFocusManager() && !had_focus)
+ GetFocusManager()->SetFocusedView(this);
+ #endif
+@@ -725,7 +725,7 @@ bool Label::PasteSelectionClipboard() {
+ }
+
+ void Label::UpdateSelectionClipboard() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!obscured()) {
+ ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_SELECTION)
+ .WriteText(GetSelectedText());
diff --git a/www/iridium/files/patch-ui_views_controls_textfield_textfield.cc b/www/iridium/files/patch-ui_views_controls_textfield_textfield.cc
new file mode 100644
index 000000000000..675e3c0f8692
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_controls_textfield_textfield.cc
@@ -0,0 +1,73 @@
+--- ui/views/controls/textfield/textfield.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/views/controls/textfield/textfield.cc
+@@ -54,7 +54,7 @@
+ #include "ui/base/win/osk_display_manager.h"
+ #endif
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ #include "base/strings/utf_string_conversions.h"
+ #include "ui/base/ime/linux/text_edit_command_auralinux.h"
+ #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h"
+@@ -153,14 +153,14 @@ ui::TextEditCommand GetCommandForKeyEven
+ case ui::VKEY_BACK:
+ if (!control)
+ return ui::TextEditCommand::DELETE_BACKWARD;
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift)
+ return ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE;
+ #endif
+ return ui::TextEditCommand::DELETE_WORD_BACKWARD;
+ case ui::VKEY_DELETE:
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Only erase by line break on Linux and ChromeOS.
+ if (shift && control)
+ return ui::TextEditCommand::DELETE_TO_END_OF_LINE;
+@@ -606,7 +606,7 @@ bool Textfield::OnMousePressed(const ui:
+ ShowImeIfNeeded();
+ }
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (!handled && !had_focus && event.IsOnlyMiddleMouseButton())
+ RequestFocus();
+ #endif
+@@ -645,7 +645,7 @@ bool Textfield::OnKeyPressed(const ui::K
+ if (!textfield)
+ return handled;
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+ std::vector<ui::TextEditCommandAuraLinux> commands;
+@@ -785,7 +785,7 @@ void Textfield::AboutToRequestFocusFromT
+ }
+
+ bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Skip any accelerator handling that conflicts with custom keybindings.
+ ui::TextEditKeyBindingsDelegateAuraLinux* delegate =
+ ui::GetTextEditKeyBindingsDelegate();
+@@ -1076,7 +1076,7 @@ void Textfield::WriteDragDataForView(Vie
+
+ SkBitmap bitmap;
+ float raster_scale = ScaleFactorForDragFromWidget(GetWidget());
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // Desktop Linux Aura does not yet support transparency in drag images.
+ SkColor color = GetBackgroundColor();
+ #else
+@@ -1873,7 +1873,7 @@ bool Textfield::PasteSelectionClipboard(
+ }
+
+ void Textfield::UpdateSelectionClipboard() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ if (text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD) {
+ ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_SELECTION)
+ .WriteText(GetSelectedText());
diff --git a/www/iridium/files/patch-ui_views_controls_webview_BUILD.gn b/www/iridium/files/patch-ui_views_controls_webview_BUILD.gn
new file mode 100644
index 000000000000..10c48d780caa
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_controls_webview_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/views/controls/webview/BUILD.gn.orig 2017-04-19 19:06:54 UTC
++++ ui/views/controls/webview/BUILD.gn
+@@ -39,7 +39,7 @@ component("webview") {
+ "//ui/views",
+ ]
+
+- if (is_linux || is_android) {
++ if (is_linux || is_bsd || is_android) {
+ sources += [ "unhandled_keyboard_event_handler_default.cc" ]
+ }
+ }
diff --git a/www/iridium/files/patch-ui_views_corewm_tooltip__aura.cc b/www/iridium/files/patch-ui_views_corewm_tooltip__aura.cc
new file mode 100644
index 000000000000..8dc832a8cb3e
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_corewm_tooltip__aura.cc
@@ -0,0 +1,11 @@
+--- ui/views/corewm/tooltip_aura.cc.orig 2017-04-19 19:06:54 UTC
++++ ui/views/corewm/tooltip_aura.cc
+@@ -34,7 +34,7 @@ const int kCursorOffsetY = 15;
+
+ // TODO(varkha): Update if native widget can be transparent on Linux.
+ bool CanUseTranslucentTooltipWidget() {
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ return false;
+ #else
+ return true;
diff --git a/www/iridium/files/patch-ui_views_examples_widget__example.cc b/www/iridium/files/patch-ui_views_examples_widget__example.cc
new file mode 100644
index 000000000000..570aa282d0ad
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_examples_widget__example.cc
@@ -0,0 +1,11 @@
+--- ui/views/examples/widget_example.cc.orig 2017-04-19 19:06:55 UTC
++++ ui/views/examples/widget_example.cc
+@@ -77,7 +77,7 @@ void WidgetExample::CreateExampleView(Vi
+ BuildButton(container, "Popup widget", POPUP);
+ BuildButton(container, "Dialog widget", DIALOG);
+ BuildButton(container, "Modal Dialog", MODAL_DIALOG);
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ // Windows does not support TYPE_CONTROL top-level widgets.
+ BuildButton(container, "Child widget", CHILD);
+ #endif
diff --git a/www/iridium/files/patch-ui_views_mus_BUILD.gn b/www/iridium/files/patch-ui_views_mus_BUILD.gn
new file mode 100644
index 000000000000..0b108f5ca4a7
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_mus_BUILD.gn
@@ -0,0 +1,11 @@
+--- ui/views/mus/BUILD.gn.orig 2017-04-19 19:06:55 UTC
++++ ui/views/mus/BUILD.gn
+@@ -79,7 +79,7 @@ component("mus") {
+ "//ui/wm",
+ ]
+
+- if (is_linux && !is_android) {
++ if ((is_linux || is_bsd) && !is_android) {
+ deps += [ "//components/font_service/public/cpp" ]
+ data_deps = [
+ "//components/font_service",
diff --git a/www/iridium/files/patch-ui_views_mus_aura__init.cc b/www/iridium/files/patch-ui_views_mus_aura__init.cc
new file mode 100644
index 000000000000..a6f0483ea51b
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_mus_aura__init.cc
@@ -0,0 +1,29 @@
+--- ui/views/mus/aura_init.cc.orig 2017-04-19 19:06:55 UTC
++++ ui/views/mus/aura_init.cc
+@@ -22,7 +22,7 @@
+ #include "ui/views/mus/mus_client.h"
+ #include "ui/views/views_delegate.h"
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ #include "components/font_service/public/cpp/font_loader.h"
+ #endif
+
+@@ -69,7 +69,7 @@ AuraInit::AuraInit(service_manager::Conn
+ InitializeResources(connector);
+
+ // Initialize the skia font code to go ask fontconfig underneath.
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ font_loader_ = sk_make_sp<font_service::FontLoader>(connector);
+ SkFontConfigInterface::SetGlobal(font_loader_.get());
+ #endif
+@@ -82,7 +82,7 @@ AuraInit::AuraInit(service_manager::Conn
+ }
+
+ AuraInit::~AuraInit() {
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ if (font_loader_.get()) {
+ SkFontConfigInterface::SetGlobal(nullptr);
+ // FontLoader is ref counted. We need to explicitly shutdown the background
diff --git a/www/iridium/files/patch-ui_views_mus_aura__init.h b/www/iridium/files/patch-ui_views_mus_aura__init.h
new file mode 100644
index 000000000000..dd1450cddfc4
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_mus_aura__init.h
@@ -0,0 +1,11 @@
+--- ui/views/mus/aura_init.h.orig 2017-04-19 19:06:55 UTC
++++ ui/views/mus/aura_init.h
+@@ -68,7 +68,7 @@ class VIEWS_MUS_EXPORT AuraInit {
+ private:
+ void InitializeResources(service_manager::Connector* connector);
+
+-#if defined(OS_LINUX)
++#if defined(OS_LINUX) || defined(OS_BSD)
+ sk_sp<font_service::FontLoader> font_loader_;
+ #endif
+
diff --git a/www/iridium/files/patch-ui_views_selection__controller.cc b/www/iridium/files/patch-ui_views_selection__controller.cc
new file mode 100644
index 000000000000..0857239cd117
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_selection__controller.cc
@@ -0,0 +1,11 @@
+--- ui/views/selection_controller.cc.orig 2017-04-19 19:06:55 UTC
++++ ui/views/selection_controller.cc
+@@ -20,7 +20,7 @@ SelectionController::SelectionController
+ delegate_(delegate),
+ handles_selection_clipboard_(false) {
+ // On Linux, update the selection clipboard on a text selection.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ set_handles_selection_clipboard(true);
+ #endif
+
diff --git a/www/iridium/files/patch-ui_views_style_platform__style.cc b/www/iridium/files/patch-ui_views_style_platform__style.cc
new file mode 100644
index 000000000000..54a11c579927
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_style_platform__style.cc
@@ -0,0 +1,11 @@
+--- ui/views/style/platform_style.cc.orig 2017-04-19 19:06:55 UTC
++++ ui/views/style/platform_style.cc
+@@ -19,7 +19,7 @@
+
+ #if defined(OS_CHROMEOS)
+ #include "ui/views/controls/scrollbar/overlay_scroll_bar.h"
+-#elif defined(OS_LINUX)
++#elif defined(OS_LINUX) || defined(OS_BSD)
+ #define DESKTOP_LINUX
+ #endif
+
diff --git a/www/iridium/files/patch-ui_views_views__delegate.cc b/www/iridium/files/patch-ui_views_views__delegate.cc
new file mode 100644
index 000000000000..d9ce07c7bf3c
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_views__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.cc.orig 2017-04-19 19:06:55 UTC
++++ ui/views/views_delegate.cc
+@@ -71,7 +71,7 @@ HICON ViewsDelegate::GetDefaultWindowIco
+ bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow window) const {
+ return false;
+ }
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD)
+ gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const {
+ return nullptr;
+ }
diff --git a/www/iridium/files/patch-ui_views_views__delegate.h b/www/iridium/files/patch-ui_views_views__delegate.h
new file mode 100644
index 000000000000..01a5548f5aa6
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_views__delegate.h
@@ -0,0 +1,11 @@
+--- ui/views/views_delegate.h.orig 2017-04-19 19:06:55 UTC
++++ ui/views/views_delegate.h
+@@ -141,7 +141,7 @@ class VIEWS_EXPORT ViewsDelegate {
+ // Returns true if the window passed in is in the Windows 8 metro
+ // environment.
+ virtual bool IsWindowInMetro(gfx::NativeWindow window) const;
+-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_FREEBSD)
+ virtual gfx::ImageSkia* GetDefaultWindowIcon() const;
+ #endif
+
diff --git a/www/iridium/files/patch-ui_views_views__switches.cc b/www/iridium/files/patch-ui_views_views__switches.cc
new file mode 100644
index 000000000000..fecb628c05e9
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_views__switches.cc
@@ -0,0 +1,11 @@
+--- ui/views/views_switches.cc.orig 2017-04-19 19:06:55 UTC
++++ ui/views/views_switches.cc
+@@ -18,7 +18,7 @@ const char kDisableViewsRectBasedTargeti
+ "disable-views-rect-based-targeting";
+
+ bool IsRectBasedTargetingEnabled() {
+-#if defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_LINUX)
++#if defined(OS_CHROMEOS) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)
+ return !base::CommandLine::ForCurrentProcess()->HasSwitch(
+ kDisableViewsRectBasedTargeting);
+ #else
diff --git a/www/iridium/files/patch-ui_views_window_custom__frame__view.cc b/www/iridium/files/patch-ui_views_window_custom__frame__view.cc
new file mode 100644
index 000000000000..76e8b978a6a5
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_window_custom__frame__view.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/custom_frame_view.cc.orig 2017-04-19 19:06:55 UTC
++++ ui/views/window/custom_frame_view.cc
+@@ -302,7 +302,7 @@ int CustomFrameView::NonClientTopBorderH
+ int CustomFrameView::CaptionButtonY() const {
+ // Maximized buttons start at window top so that even if their images aren't
+ // drawn flush with the screen edge, they still obey Fitts' Law.
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)
+ return FrameBorderThickness();
+ #else
+ return frame_->IsMaximized() ? FrameBorderThickness() : kFrameShadowThickness;
diff --git a/www/iridium/files/patch-ui_views_window_dialog__delegate.cc b/www/iridium/files/patch-ui_views_window_dialog__delegate.cc
new file mode 100644
index 000000000000..75ec2f453045
--- /dev/null
+++ b/www/iridium/files/patch-ui_views_window_dialog__delegate.cc
@@ -0,0 +1,11 @@
+--- ui/views/window/dialog_delegate.cc.orig 2017-04-19 19:06:55 UTC
++++ ui/views/window/dialog_delegate.cc
+@@ -57,7 +57,7 @@ Widget::InitParams DialogDelegate::GetDi
+ params.bounds = bounds;
+ DialogDelegate* dialog = delegate->AsDialogDelegate();
+
+-#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS)
+ // The new style doesn't support unparented dialogs on Linux desktop.
+ if (dialog)
+ dialog->supports_custom_frame_ &= parent != NULL;
diff --git a/www/iridium/files/patch-ui_webui_resources_js_cr.js b/www/iridium/files/patch-ui_webui_resources_js_cr.js
new file mode 100644
index 000000000000..73a2958bfc91
--- /dev/null
+++ b/www/iridium/files/patch-ui_webui_resources_js_cr.js
@@ -0,0 +1,14 @@
+--- ui/webui/resources/js/cr.js.orig 2017-04-19 19:06:55 UTC
++++ ui/webui/resources/js/cr.js
+@@ -451,6 +451,11 @@ var cr = cr || function() {
+ get doc() {
+ return document;
+ },
++
++ /** Whether this is on *BSD. */
++ get isBSD() {
++ return /BSD/.test(navigator.userAgent);
++ },
+
+ /** Whether we are using a Mac or not. */
+ get isMac() {
diff --git a/www/iridium/files/patch-ui_webui_resources_js_icon.js b/www/iridium/files/patch-ui_webui_resources_js_icon.js
new file mode 100644
index 000000000000..7cd49238307d
--- /dev/null
+++ b/www/iridium/files/patch-ui_webui_resources_js_icon.js
@@ -0,0 +1,11 @@
+--- ui/webui/resources/js/icon.js.orig 2017-04-19 19:06:55 UTC
++++ ui/webui/resources/js/icon.js
+@@ -14,7 +14,7 @@ cr.define('cr.icon', function() {
+ // supports SCALE_FACTOR_100P on all non-iOS platforms.
+ supportedScaleFactors.push(1);
+ }
+- if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux) {
++ if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux || cr.isBSD) {
+ // All desktop platforms support zooming which also updates the renderer's
+ // device scale factors (a.k.a devicePixelRatio), and these platforms have
+ // high DPI assets for 2x. Let the renderer pick the closest image for
diff --git a/www/iridium/files/patch-v8_BUILD.gn b/www/iridium/files/patch-v8_BUILD.gn
new file mode 100644
index 000000000000..fdc21e52a427
--- /dev/null
+++ b/www/iridium/files/patch-v8_BUILD.gn
@@ -0,0 +1,32 @@
+--- v8/BUILD.gn.orig 2017-04-19 19:07:57 UTC
++++ v8/BUILD.gn
+@@ -2336,7 +2336,7 @@ v8_component("v8_libbase") {
+ sources += [ "src/base/platform/platform-posix.cc" ]
+ }
+
+- if (is_linux) {
++ if (is_linux && !is_bsd) {
+ sources += [
+ "src/base/debug/stack_trace_posix.cc",
+ "src/base/platform/platform-linux.cc",
+@@ -2346,6 +2346,12 @@ v8_component("v8_libbase") {
+ "dl",
+ "rt",
+ ]
++ } else if (is_bsd) {
++ sources += [
++ "src/base/debug/stack_trace_posix.cc",
++ "src/base/platform/platform-freebsd.cc",
++ ]
++ libs = [ "rt", "execinfo" ]
+ } else if (is_android) {
+ if (current_toolchain == host_toolchain) {
+ libs = [
+@@ -2479,6 +2485,7 @@ if (current_toolchain == v8_snapshot_too
+ sources = [
+ "src/snapshot/mksnapshot.cc",
+ ]
++ libs = ["execinfo"]
+
+ configs = [ ":internal_config" ]
+
diff --git a/www/iridium/files/patch-v8_src_base_platform_platform-posix.cc b/www/iridium/files/patch-v8_src_base_platform_platform-posix.cc
new file mode 100644
index 000000000000..cdef6c4ec294
--- /dev/null
+++ b/www/iridium/files/patch-v8_src_base_platform_platform-posix.cc
@@ -0,0 +1,26 @@
+--- v8/src/base/platform/platform-posix.cc.orig 2017-04-19 19:07:57 UTC
++++ v8/src/base/platform/platform-posix.cc
+@@ -27,6 +27,10 @@
+ #include <sys/sysctl.h> // NOLINT, for sysctl
+ #endif
+
++#if V8_OS_NETBSD
++#include <lwp.h> // for _lwp_self
++#endif
++
+ #undef MAP_TYPE
+
+ #if defined(ANDROID) && !defined(V8_ANDROID_LOG_STDOUT)
+@@ -352,6 +356,12 @@ int OS::GetCurrentThreadId() {
+ return static_cast<int>(syscall(__NR_gettid));
+ #elif V8_OS_ANDROID
+ return static_cast<int>(gettid());
++#elif V8_OS_DRAGONFLYBSD || defined(__DragonFly__)
++ return static_cast<int>(lwp_gettid());
++#elif V8_OS_FREEBSD
++ return static_cast<int>(pthread_getthreadid_np());
++#elif V8_OS_NETBSD
++ return static_cast<int>(_lwp_self());
+ #elif V8_OS_AIX
+ return static_cast<int>(thread_self());
+ #elif V8_OS_SOLARIS
diff --git a/www/iridium/files/patch-v8_src_globals.h b/www/iridium/files/patch-v8_src_globals.h
new file mode 100644
index 000000000000..54aac95e5f27
--- /dev/null
+++ b/www/iridium/files/patch-v8_src_globals.h
@@ -0,0 +1,14 @@
+--- v8/src/globals.h.orig 2017-04-19 19:07:57 UTC
++++ v8/src/globals.h
+@@ -183,7 +183,11 @@ const size_t kCodeRangeAreaAlignment = 2
+ const size_t kMaximalCodeRangeSize = 512 * MB;
+ const size_t kCodeRangeAreaAlignment = 64 * KB; // OS page on PPC Linux
+ #else
++#if defined(__FreeBSD__)
++const size_t kMaximalCodeRangeSize = 256 * MB;
++#else
+ const size_t kMaximalCodeRangeSize = 512 * MB;
++#endif
+ const size_t kCodeRangeAreaAlignment = 4 * KB; // OS page.
+ #endif
+ #if V8_OS_WIN
diff --git a/www/iridium/pkg-descr b/www/iridium/pkg-descr
new file mode 100644
index 000000000000..50b29c6098d7
--- /dev/null
+++ b/www/iridium/pkg-descr
@@ -0,0 +1,7 @@
+Iridium is a free, open, and libre browser modification of the Chromium
+code base, with privacy being enhanced in several key areas.
+
+Automatic transmission of partial queries, keywords, metrics to central
+services is inhibited and only occurs with consent.
+
+WWW: https://iridiumbrowser.de/
diff --git a/www/iridium/pkg-message b/www/iridium/pkg-message
new file mode 100644
index 000000000000..2eb1ab58f2b1
--- /dev/null
+++ b/www/iridium/pkg-message
@@ -0,0 +1,9 @@
+For correct operation, shared memory support has to be enabled
+in Iridium by performing the following command as root :
+
+sysctl kern.ipc.shm_allow_removed=1
+
+To preserve this setting across reboots, append the following
+to /etc/sysctl.conf :
+
+kern.ipc.shm_allow_removed=1
diff --git a/www/iridium/pkg-plist b/www/iridium/pkg-plist
new file mode 100644
index 000000000000..bb9d93dbc471
--- /dev/null
+++ b/www/iridium/pkg-plist
@@ -0,0 +1,232 @@
+bin/iridium
+man/man1/iridium.1.gz
+share/applications/iridium-browser.desktop
+%%DATADIR%%/iridium
+%%DATADIR%%/chrome_100_percent.pak
+%%DATADIR%%/chrome_200_percent.pak
+%%DATADIR%%/font_service.service
+%%DATADIR%%/headless_lib.pak
+%%DATADIR%%/icudtl.dat
+%%DATADIR%%/keyboard_resources.pak
+%%DATADIR%%/locales/am.pak
+%%DATADIR%%/locales/ar.pak
+%%DATADIR%%/locales/bg.pak
+%%DATADIR%%/locales/bn.pak
+%%DATADIR%%/locales/ca.pak
+%%DATADIR%%/locales/cs.pak
+%%DATADIR%%/locales/da.pak
+%%DATADIR%%/locales/de.pak
+%%DATADIR%%/locales/el.pak
+%%DATADIR%%/locales/en-GB.pak
+%%DATADIR%%/locales/en-US.pak
+%%DATADIR%%/locales/es-419.pak
+%%DATADIR%%/locales/es.pak
+%%DATADIR%%/locales/et.pak
+%%DATADIR%%/locales/fa.pak
+%%DATADIR%%/locales/fi.pak
+%%DATADIR%%/locales/fil.pak
+%%DATADIR%%/locales/fr.pak
+%%DATADIR%%/locales/gu.pak
+%%DATADIR%%/locales/he.pak
+%%DATADIR%%/locales/hi.pak
+%%DATADIR%%/locales/hr.pak
+%%DATADIR%%/locales/hu.pak
+%%DATADIR%%/locales/id.pak
+%%DATADIR%%/locales/it.pak
+%%DATADIR%%/locales/ja.pak
+%%DATADIR%%/locales/kn.pak
+%%DATADIR%%/locales/ko.pak
+%%DATADIR%%/locales/lt.pak
+%%DATADIR%%/locales/lv.pak
+%%DATADIR%%/locales/ml.pak
+%%DATADIR%%/locales/mr.pak
+%%DATADIR%%/locales/ms.pak
+%%DATADIR%%/locales/nb.pak
+%%DATADIR%%/locales/nl.pak
+%%DATADIR%%/locales/pl.pak
+%%DATADIR%%/locales/pt-BR.pak
+%%DATADIR%%/locales/pt-PT.pak
+%%DATADIR%%/locales/ro.pak
+%%DATADIR%%/locales/ru.pak
+%%DATADIR%%/locales/sk.pak
+%%DATADIR%%/locales/sl.pak
+%%DATADIR%%/locales/sr.pak
+%%DATADIR%%/locales/sv.pak
+%%DATADIR%%/locales/sw.pak
+%%DATADIR%%/locales/ta.pak
+%%DATADIR%%/locales/te.pak
+%%DATADIR%%/locales/th.pak
+%%DATADIR%%/locales/tr.pak
+%%DATADIR%%/locales/uk.pak
+%%DATADIR%%/locales/vi.pak
+%%DATADIR%%/locales/zh-CN.pak
+%%DATADIR%%/locales/zh-TW.pak
+%%DATADIR%%/mksnapshot
+%%DATADIR%%/mus_app_resources_100.pak
+%%DATADIR%%/mus_app_resources_200.pak
+%%DATADIR%%/mus_app_resources_strings.pak
+%%DATADIR%%/natives_blob.bin
+%%DATADIR%%/resources.pak
+%%DATADIR%%/resources/inspector/Images/accelerometer-back.png
+%%DATADIR%%/resources/inspector/Images/accelerometer-bottom.png
+%%DATADIR%%/resources/inspector/Images/accelerometer-front.png
+%%DATADIR%%/resources/inspector/Images/accelerometer-left.png
+%%DATADIR%%/resources/inspector/Images/accelerometer-right.png
+%%DATADIR%%/resources/inspector/Images/accelerometer-top.png
+%%DATADIR%%/resources/inspector/Images/audits_logo.png
+%%DATADIR%%/resources/inspector/Images/audits_logo_2x.png
+%%DATADIR%%/resources/inspector/Images/audits_logo_bw.png
+%%DATADIR%%/resources/inspector/Images/audits_logo_bw_2x.png
+%%DATADIR%%/resources/inspector/Images/breakpoint.png
+%%DATADIR%%/resources/inspector/Images/breakpointConditional.png
+%%DATADIR%%/resources/inspector/Images/breakpointConditional_2x.png
+%%DATADIR%%/resources/inspector/Images/breakpoint_2x.png
+%%DATADIR%%/resources/inspector/Images/checker.png
+%%DATADIR%%/resources/inspector/Images/chromeDisabledSelect.png
+%%DATADIR%%/resources/inspector/Images/chromeDisabledSelect_2x.png
+%%DATADIR%%/resources/inspector/Images/chromeLeft.png
+%%DATADIR%%/resources/inspector/Images/chromeMiddle.png
+%%DATADIR%%/resources/inspector/Images/chromeRight.png
+%%DATADIR%%/resources/inspector/Images/chromeSelect.png
+%%DATADIR%%/resources/inspector/Images/chromeSelect_2x.png
+%%DATADIR%%/resources/inspector/Images/deleteIcon.png
+%%DATADIR%%/resources/inspector/Images/errorWave.png
+%%DATADIR%%/resources/inspector/Images/errorWave_2x.png
+%%DATADIR%%/resources/inspector/Images/ic_info_black_18dp.svg
+%%DATADIR%%/resources/inspector/Images/ic_warning_black_18dp.svg
+%%DATADIR%%/resources/inspector/Images/navigationControls.png
+%%DATADIR%%/resources/inspector/Images/navigationControls_2x.png
+%%DATADIR%%/resources/inspector/Images/popoverArrows.png
+%%DATADIR%%/resources/inspector/Images/profileGroupIcon.png
+%%DATADIR%%/resources/inspector/Images/profileIcon.png
+%%DATADIR%%/resources/inspector/Images/profileSmallIcon.png
+%%DATADIR%%/resources/inspector/Images/radioDot.png
+%%DATADIR%%/resources/inspector/Images/resizeDiagonal.png
+%%DATADIR%%/resources/inspector/Images/resizeDiagonal_2x.png
+%%DATADIR%%/resources/inspector/Images/resizeHorizontal.png
+%%DATADIR%%/resources/inspector/Images/resizeHorizontal_2x.png
+%%DATADIR%%/resources/inspector/Images/resizeVertical.png
+%%DATADIR%%/resources/inspector/Images/resizeVertical_2x.png
+%%DATADIR%%/resources/inspector/Images/resourceCSSIcon.png
+%%DATADIR%%/resources/inspector/Images/resourceDocumentIcon.png
+%%DATADIR%%/resources/inspector/Images/resourceDocumentIconSmall.png
+%%DATADIR%%/resources/inspector/Images/resourceGlyphs.png
+%%DATADIR%%/resources/inspector/Images/resourceGlyphs_2x.png
+%%DATADIR%%/resources/inspector/Images/resourceJSIcon.png
+%%DATADIR%%/resources/inspector/Images/resourcePlainIcon.png
+%%DATADIR%%/resources/inspector/Images/resourcePlainIconSmall.png
+%%DATADIR%%/resources/inspector/Images/resourcesTimeGraphIcon.png
+%%DATADIR%%/resources/inspector/Images/searchNext.png
+%%DATADIR%%/resources/inspector/Images/searchPrev.png
+%%DATADIR%%/resources/inspector/Images/securityIcons.png
+%%DATADIR%%/resources/inspector/Images/securityIcons_2x.png
+%%DATADIR%%/resources/inspector/Images/smallIcons.png
+%%DATADIR%%/resources/inspector/Images/smallIcons_2x.png
+%%DATADIR%%/resources/inspector/Images/speech.png
+%%DATADIR%%/resources/inspector/Images/toolbarButtonGlyphs.png
+%%DATADIR%%/resources/inspector/Images/toolbarButtonGlyphs_2x.png
+%%DATADIR%%/resources/inspector/Images/toolbarResizerVertical.png
+%%DATADIR%%/resources/inspector/Images/touchCursor.png
+%%DATADIR%%/resources/inspector/Images/touchCursor_2x.png
+%%DATADIR%%/resources/inspector/Images/treeoutlineTriangles.png
+%%DATADIR%%/resources/inspector/Images/treeoutlineTriangles_2x.png
+%%DATADIR%%/resources/inspector/InspectorBackendCommands.js
+%%DATADIR%%/resources/inspector/SupportedCSSProperties.js
+%%DATADIR%%/resources/inspector/Tests.js
+%%DATADIR%%/resources/inspector/accessibility/accessibility_module.js
+%%DATADIR%%/resources/inspector/animation/animation_module.js
+%%DATADIR%%/resources/inspector/audits2_worker.js
+%%DATADIR%%/resources/inspector/audits2_worker/audits2_worker_module.js
+%%DATADIR%%/resources/inspector/audits/audits_module.js
+%%DATADIR%%/resources/inspector/audits2/audits2_module.js
+%%DATADIR%%/resources/inspector/cm/cm_module.js
+%%DATADIR%%/resources/inspector/cm_modes/cm_modes_module.js
+%%DATADIR%%/resources/inspector/color_picker/color_picker_module.js
+%%DATADIR%%/resources/inspector/console/console_module.js
+%%DATADIR%%/resources/inspector/cookie_table/cookie_table_module.js
+%%DATADIR%%/resources/inspector/coverage/coverage_module.js
+%%DATADIR%%/resources/inspector/data_grid/data_grid_module.js
+%%DATADIR%%/resources/inspector/devices/devices_module.js
+%%DATADIR%%/resources/inspector/devtools_compatibility.js
+%%DATADIR%%/resources/inspector/devtools_extension_api.js
+%%DATADIR%%/resources/inspector/diff/diff_module.js
+%%DATADIR%%/resources/inspector/elements/elements_module.js
+%%DATADIR%%/resources/inspector/emulated_devices/Nexus5X-landscape.svg
+%%DATADIR%%/resources/inspector/emulated_devices/Nexus5X-portrait.svg
+%%DATADIR%%/resources/inspector/emulated_devices/Nexus6P-landscape.svg
+%%DATADIR%%/resources/inspector/emulated_devices/Nexus6P-portrait.svg
+%%DATADIR%%/resources/inspector/emulated_devices/emulated_devices_module.js
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5-horizontal-default-1x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5-horizontal-default-2x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5-horizontal-keyboard-1x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5-horizontal-keyboard-2x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5-horizontal-navigation-1x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5-horizontal-navigation-2x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5-vertical-default-1x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5-vertical-default-2x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5-vertical-keyboard-1x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5-vertical-keyboard-2x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5-vertical-navigation-1x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5-vertical-navigation-2x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5x-horizontal-default-1x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5x-horizontal-default-2x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5x-horizontal-keyboard-1x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5x-horizontal-keyboard-2x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5x-horizontal-navigation-1x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5x-horizontal-navigation-2x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5x-vertical-default-1x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5x-vertical-default-2x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5x-vertical-keyboard-1x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5x-vertical-keyboard-2x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5x-vertical-navigation-1x.png
+%%DATADIR%%/resources/inspector/emulated_devices/google-nexus-5x-vertical-navigation-2x.png
+%%DATADIR%%/resources/inspector/emulated_devices/iPad-landscape.svg
+%%DATADIR%%/resources/inspector/emulated_devices/iPad-portrait.svg
+%%DATADIR%%/resources/inspector/emulated_devices/iPhone5-landscape.svg
+%%DATADIR%%/resources/inspector/emulated_devices/iPhone5-portrait.svg
+%%DATADIR%%/resources/inspector/emulated_devices/iPhone6-landscape.svg
+%%DATADIR%%/resources/inspector/emulated_devices/iPhone6-portrait.svg
+%%DATADIR%%/resources/inspector/emulated_devices/iPhone6Plus-landscape.svg
+%%DATADIR%%/resources/inspector/emulated_devices/iPhone6Plus-portrait.svg
+%%DATADIR%%/resources/inspector/event_listeners/event_listeners_module.js
+%%DATADIR%%/resources/inspector/formatter_worker.js
+%%DATADIR%%/resources/inspector/gonzales/gonzales_module.js
+%%DATADIR%%/resources/inspector/heap_snapshot_model/heap_snapshot_model_module.js
+%%DATADIR%%/resources/inspector/heap_snapshot_worker.js
+%%DATADIR%%/resources/inspector/inline_editor/inline_editor_module.js
+%%DATADIR%%/resources/inspector/inspector.html
+%%DATADIR%%/resources/inspector/inspector.js
+%%DATADIR%%/resources/inspector/layer_viewer/layer_viewer_module.js
+%%DATADIR%%/resources/inspector/layers/layers_module.js
+%%DATADIR%%/resources/inspector/network/network_module.js
+%%DATADIR%%/resources/inspector/network_group_lookup/network_group_lookup_module.js
+%%DATADIR%%/resources/inspector/perf_ui/perf_ui_module.js
+%%DATADIR%%/resources/inspector/product_registry/product_registry_module.js
+%%DATADIR%%/resources/inspector/profiler/profiler_module.js
+%%DATADIR%%/resources/inspector/quick_open/quick_open_module.js
+%%DATADIR%%/resources/inspector/resources/resources_module.js
+%%DATADIR%%/resources/inspector/sass/sass_module.js
+%%DATADIR%%/resources/inspector/screencast/screencast_module.js
+%%DATADIR%%/resources/inspector/security/security_module.js
+%%DATADIR%%/resources/inspector/settings/settings_module.js
+%%DATADIR%%/resources/inspector/snippets/snippets_module.js
+%%DATADIR%%/resources/inspector/source_frame/source_frame_module.js
+%%DATADIR%%/resources/inspector/sources/sources_module.js
+%%DATADIR%%/resources/inspector/terminal/terminal_module.js
+%%DATADIR%%/resources/inspector/text_editor/text_editor_module.js
+%%DATADIR%%/resources/inspector/timeline/timeline_module.js
+%%DATADIR%%/resources/inspector/timeline_model/timeline_model_module.js
+%%DATADIR%%/resources/inspector/toolbox.html
+%%DATADIR%%/resources/inspector/toolbox.js
+%%DATADIR%%/resources/inspector/unit_test_runner.html
+%%DATADIR%%/resources/inspector/unit_test_runner.js
+%%DATADIR%%/resources/inspector/utility_shared_worker.js
+%%DATADIR%%/snapshot_blob.bin
+%%DATADIR%%/ui.service
+%%DATADIR%%/views_mus_resources.pak
+share/icons/hicolor/128x128/apps/iridium.png
+share/icons/hicolor/22x22/apps/iridium.png
+share/icons/hicolor/24x24/apps/iridium.png
+share/icons/hicolor/256x256/apps/iridium.png
+share/icons/hicolor/48x48/apps/iridium.png
+share/icons/hicolor/64x64/apps/iridium.png