Add GN arg to disable Alloy bootstrap (see #3681, see #3685)

Set enable_alloy_bootstrap=false to build with Alloy bootstrap code
removed. Extension API is documented as deprecated in comments but
not compiled out with this arg.
This commit is contained in:
Marshall Greenblatt
2024-04-29 21:09:17 -04:00
parent d666ec5770
commit b5d84c254d
96 changed files with 1243 additions and 516 deletions

230
BUILD.gn
View File

@ -99,6 +99,7 @@ import("//build/config/locales.gni")
import("//build/config/ozone.gni") import("//build/config/ozone.gni")
import("//build/config/sanitizers/sanitizers.gni") import("//build/config/sanitizers/sanitizers.gni")
import("//build/config/ui.gni") import("//build/config/ui.gni")
import("//cef/libcef/features/features.gni")
import("//chrome/common/features.gni") import("//chrome/common/features.gni")
import("//content/public/app/mac_helpers.gni") import("//content/public/app/mac_helpers.gni")
import("//extensions/buildflags/buildflags.gni") import("//extensions/buildflags/buildflags.gni")
@ -457,42 +458,14 @@ source_set("libcef_test_support") {
source_set("libcef_static") { source_set("libcef_static") {
sources = includes_common + sources = includes_common +
gypi_paths.autogen_cpp_includes + [ gypi_paths.autogen_cpp_includes + [
"libcef/browser/alloy/alloy_browser_context.cc",
"libcef/browser/alloy/alloy_browser_context.h",
"libcef/browser/alloy/alloy_browser_host_impl.cc", "libcef/browser/alloy/alloy_browser_host_impl.cc",
"libcef/browser/alloy/alloy_browser_host_impl.h", "libcef/browser/alloy/alloy_browser_host_impl.h",
"libcef/browser/alloy/alloy_browser_main.cc",
"libcef/browser/alloy/alloy_browser_main.h",
"libcef/browser/alloy/alloy_content_browser_client.cc",
"libcef/browser/alloy/alloy_content_browser_client.h",
"libcef/browser/alloy/alloy_download_manager_delegate.cc",
"libcef/browser/alloy/alloy_download_manager_delegate.h",
"libcef/browser/alloy/alloy_download_util.cc",
"libcef/browser/alloy/alloy_download_util.h",
"libcef/browser/alloy/alloy_web_contents_view_delegate.cc",
"libcef/browser/alloy/alloy_web_contents_view_delegate.h",
"libcef/browser/alloy/browser_platform_delegate_alloy.cc", "libcef/browser/alloy/browser_platform_delegate_alloy.cc",
"libcef/browser/alloy/browser_platform_delegate_alloy.h", "libcef/browser/alloy/browser_platform_delegate_alloy.h",
"libcef/browser/alloy/devtools/alloy_devtools_window_runner.cc",
"libcef/browser/alloy/devtools/alloy_devtools_window_runner.h",
"libcef/browser/alloy/devtools/devtools_file_manager.cc",
"libcef/browser/alloy/devtools/devtools_file_manager.h",
"libcef/browser/alloy/devtools/devtools_frontend.cc",
"libcef/browser/alloy/devtools/devtools_frontend.h",
"libcef/browser/alloy/devtools/devtools_manager_delegate.cc",
"libcef/browser/alloy/devtools/devtools_manager_delegate.h",
"libcef/browser/alloy/dialogs/alloy_constrained_window_views_client.cc", "libcef/browser/alloy/dialogs/alloy_constrained_window_views_client.cc",
"libcef/browser/alloy/dialogs/alloy_constrained_window_views_client.h", "libcef/browser/alloy/dialogs/alloy_constrained_window_views_client.h",
"libcef/browser/alloy/dialogs/alloy_javascript_dialog_manager_delegate.cc",
"libcef/browser/alloy/dialogs/alloy_javascript_dialog_manager_delegate.h",
"libcef/browser/alloy/dialogs/alloy_web_contents_dialog_helper.cc", "libcef/browser/alloy/dialogs/alloy_web_contents_dialog_helper.cc",
"libcef/browser/alloy/dialogs/alloy_web_contents_dialog_helper.h", "libcef/browser/alloy/dialogs/alloy_web_contents_dialog_helper.h",
"libcef/browser/alloy/chrome_browser_process_alloy.cc",
"libcef/browser/alloy/chrome_browser_process_alloy.h",
"libcef/browser/alloy/chrome_profile_manager_alloy.cc",
"libcef/browser/alloy/chrome_profile_manager_alloy.h",
"libcef/browser/alloy/chrome_profile_alloy.cc",
"libcef/browser/alloy/chrome_profile_alloy.h",
"libcef/browser/audio_capturer.cc", "libcef/browser/audio_capturer.cc",
"libcef/browser/audio_capturer.h", "libcef/browser/audio_capturer.h",
"libcef/browser/audio_loopback_stream_creator.cc", "libcef/browser/audio_loopback_stream_creator.cc",
@ -501,8 +474,6 @@ source_set("libcef_static") {
"libcef/browser/browser_contents_delegate.h", "libcef/browser/browser_contents_delegate.h",
"libcef/browser/browser_context.cc", "libcef/browser/browser_context.cc",
"libcef/browser/browser_context.h", "libcef/browser/browser_context.h",
"libcef/browser/browser_context_keyed_service_factories.cc",
"libcef/browser/browser_context_keyed_service_factories.h",
"libcef/browser/browser_frame.cc", "libcef/browser/browser_frame.cc",
"libcef/browser/browser_frame.h", "libcef/browser/browser_frame.h",
"libcef/browser/browser_host_base.cc", "libcef/browser/browser_host_base.cc",
@ -580,50 +551,8 @@ source_set("libcef_static") {
"libcef/browser/download_manager_delegate.h", "libcef/browser/download_manager_delegate.h",
"libcef/browser/download_manager_delegate_impl.cc", "libcef/browser/download_manager_delegate_impl.cc",
"libcef/browser/download_manager_delegate_impl.h", "libcef/browser/download_manager_delegate_impl.h",
"libcef/browser/extension_impl.cc",
"libcef/browser/extension_impl.h",
"libcef/browser/extensions/api/file_system/cef_file_system_delegate.cc",
"libcef/browser/extensions/api/file_system/cef_file_system_delegate.h",
"libcef/browser/extensions/api/storage/sync_value_store_cache.cc",
"libcef/browser/extensions/api/storage/sync_value_store_cache.h",
"libcef/browser/extensions/api/tabs/tabs_api.cc",
"libcef/browser/extensions/api/tabs/tabs_api.h",
"libcef/browser/extensions/alloy_extensions_util.cc",
"libcef/browser/extensions/alloy_extensions_util.h",
"libcef/browser/extensions/browser_extensions_util.cc", "libcef/browser/extensions/browser_extensions_util.cc",
"libcef/browser/extensions/browser_extensions_util.h", "libcef/browser/extensions/browser_extensions_util.h",
"libcef/browser/extensions/browser_platform_delegate_background.cc",
"libcef/browser/extensions/browser_platform_delegate_background.h",
"libcef/browser/extensions/chrome_api_registration.cc",
"libcef/browser/extensions/chrome_api_registration.h",
"libcef/browser/extensions/component_extension_resource_manager.cc",
"libcef/browser/extensions/component_extension_resource_manager.h",
"libcef/browser/extensions/extensions_api_client.cc",
"libcef/browser/extensions/extensions_api_client.h",
"libcef/browser/extensions/extensions_browser_api_provider.cc",
"libcef/browser/extensions/extensions_browser_api_provider.h",
"libcef/browser/extensions/extensions_browser_client.cc",
"libcef/browser/extensions/extensions_browser_client.h",
"libcef/browser/extensions/extension_background_host.cc",
"libcef/browser/extensions/extension_background_host.h",
"libcef/browser/extensions/extension_function_details.cc",
"libcef/browser/extensions/extension_function_details.h",
"libcef/browser/extensions/extension_host_delegate.cc",
"libcef/browser/extensions/extension_host_delegate.h",
"libcef/browser/extensions/extension_system.cc",
"libcef/browser/extensions/extension_system.h",
"libcef/browser/extensions/extension_system_factory.cc",
"libcef/browser/extensions/extension_system_factory.h",
"libcef/browser/extensions/extension_view_host.cc",
"libcef/browser/extensions/extension_view_host.h",
"libcef/browser/extensions/extension_web_contents_observer.cc",
"libcef/browser/extensions/extension_web_contents_observer.h",
"libcef/browser/extensions/mime_handler_view_guest_delegate.cc",
"libcef/browser/extensions/mime_handler_view_guest_delegate.h",
"libcef/browser/extensions/value_store/cef_value_store.cc",
"libcef/browser/extensions/value_store/cef_value_store.h",
"libcef/browser/extensions/value_store/cef_value_store_factory.cc",
"libcef/browser/extensions/value_store/cef_value_store_factory.h",
"libcef/browser/file_dialog_manager.cc", "libcef/browser/file_dialog_manager.cc",
"libcef/browser/file_dialog_manager.h", "libcef/browser/file_dialog_manager.h",
"libcef/browser/file_dialog_runner.cc", "libcef/browser/file_dialog_runner.cc",
@ -646,8 +575,6 @@ source_set("libcef_static") {
"libcef/browser/main_runner.h", "libcef/browser/main_runner.h",
"libcef/browser/media_access_query.cc", "libcef/browser/media_access_query.cc",
"libcef/browser/media_access_query.h", "libcef/browser/media_access_query.h",
"libcef/browser/media_capture_devices_dispatcher.cc",
"libcef/browser/media_capture_devices_dispatcher.h",
"libcef/browser/media_router/media_route_impl.cc", "libcef/browser/media_router/media_route_impl.cc",
"libcef/browser/media_router/media_route_impl.h", "libcef/browser/media_router/media_route_impl.h",
"libcef/browser/media_router/media_router_impl.cc", "libcef/browser/media_router/media_router_impl.cc",
@ -676,12 +603,6 @@ source_set("libcef_static") {
"libcef/browser/net/chrome_scheme_handler.cc", "libcef/browser/net/chrome_scheme_handler.cc",
"libcef/browser/net/chrome_scheme_handler.h", "libcef/browser/net/chrome_scheme_handler.h",
"libcef/browser/net/crlset_file_util_impl.cc", "libcef/browser/net/crlset_file_util_impl.cc",
"libcef/browser/net/devtools_scheme_handler.cc",
"libcef/browser/net/devtools_scheme_handler.h",
"libcef/browser/net/internal_scheme_handler.cc",
"libcef/browser/net/internal_scheme_handler.h",
"libcef/browser/net/scheme_handler.cc",
"libcef/browser/net/scheme_handler.h",
"libcef/browser/net/throttle_handler.cc", "libcef/browser/net/throttle_handler.cc",
"libcef/browser/net/throttle_handler.h", "libcef/browser/net/throttle_handler.h",
"libcef/browser/net_service/browser_urlrequest_impl.cc", "libcef/browser/net_service/browser_urlrequest_impl.cc",
@ -737,8 +658,6 @@ source_set("libcef_static") {
"libcef/browser/prefs/pref_helper.h", "libcef/browser/prefs/pref_helper.h",
"libcef/browser/prefs/pref_registrar.cc", "libcef/browser/prefs/pref_registrar.cc",
"libcef/browser/prefs/pref_registrar.h", "libcef/browser/prefs/pref_registrar.h",
"libcef/browser/prefs/pref_store.cc",
"libcef/browser/prefs/pref_store.h",
"libcef/browser/prefs/renderer_prefs.cc", "libcef/browser/prefs/renderer_prefs.cc",
"libcef/browser/prefs/renderer_prefs.h", "libcef/browser/prefs/renderer_prefs.h",
"libcef/browser/print_settings_impl.cc", "libcef/browser/print_settings_impl.cc",
@ -755,10 +674,6 @@ source_set("libcef_static") {
"libcef/browser/server_impl.h", "libcef/browser/server_impl.h",
"libcef/browser/simple_menu_model_impl.cc", "libcef/browser/simple_menu_model_impl.cc",
"libcef/browser/simple_menu_model_impl.h", "libcef/browser/simple_menu_model_impl.h",
"libcef/browser/speech_recognition_manager_delegate.cc",
"libcef/browser/speech_recognition_manager_delegate.h",
"libcef/browser/ssl_host_state_delegate.cc",
"libcef/browser/ssl_host_state_delegate.h",
"libcef/browser/ssl_info_impl.cc", "libcef/browser/ssl_info_impl.cc",
"libcef/browser/ssl_info_impl.h", "libcef/browser/ssl_info_impl.h",
"libcef/browser/ssl_status_impl.cc", "libcef/browser/ssl_status_impl.cc",
@ -841,12 +756,6 @@ source_set("libcef_static") {
"libcef/browser/xml_reader_impl.h", "libcef/browser/xml_reader_impl.h",
"libcef/browser/zip_reader_impl.cc", "libcef/browser/zip_reader_impl.cc",
"libcef/browser/zip_reader_impl.h", "libcef/browser/zip_reader_impl.h",
"libcef/common/alloy/alloy_content_client.cc",
"libcef/common/alloy/alloy_content_client.h",
"libcef/common/alloy/alloy_main_delegate.cc",
"libcef/common/alloy/alloy_main_delegate.h",
"libcef/common/alloy/alloy_main_runner_delegate.cc",
"libcef/common/alloy/alloy_main_runner_delegate.h",
"libcef/common/app_manager.cc", "libcef/common/app_manager.cc",
"libcef/common/app_manager.h", "libcef/common/app_manager.h",
"libcef/common/base_impl.cc", "libcef/common/base_impl.cc",
@ -866,14 +775,6 @@ source_set("libcef_static") {
"libcef/common/crash_reporting.h", "libcef/common/crash_reporting.h",
"libcef/common/drag_data_impl.cc", "libcef/common/drag_data_impl.cc",
"libcef/common/drag_data_impl.h", "libcef/common/drag_data_impl.h",
"libcef/common/extensions/chrome_generated_schemas.cc",
"libcef/common/extensions/chrome_generated_schemas.h",
"libcef/common/extensions/extensions_api_provider.cc",
"libcef/common/extensions/extensions_api_provider.h",
"libcef/common/extensions/extensions_client.cc",
"libcef/common/extensions/extensions_client.h",
"libcef/common/extensions/extensions_util.cc",
"libcef/common/extensions/extensions_util.h",
"libcef/common/file_util_impl.cc", "libcef/common/file_util_impl.cc",
"libcef/common/frame_util.cc", "libcef/common/frame_util.cc",
"libcef/common/frame_util.h", "libcef/common/frame_util.h",
@ -883,8 +784,6 @@ source_set("libcef_static") {
"libcef/common/main_runner_handler.h", "libcef/common/main_runner_handler.h",
"libcef/common/net/http_header_utils.cc", "libcef/common/net/http_header_utils.cc",
"libcef/common/net/http_header_utils.h", "libcef/common/net/http_header_utils.h",
"libcef/common/net/net_resource_provider.cc",
"libcef/common/net/net_resource_provider.h",
"libcef/common/net/scheme_registration.cc", "libcef/common/net/scheme_registration.cc",
"libcef/common/net/scheme_registration.h", "libcef/common/net/scheme_registration.h",
"libcef/common/net/url_util.cc", "libcef/common/net/url_util.cc",
@ -934,14 +833,6 @@ source_set("libcef_static") {
"libcef/common/waitable_event_impl.h", "libcef/common/waitable_event_impl.h",
"libcef/features/runtime.h", "libcef/features/runtime.h",
"libcef/features/runtime_checks.h", "libcef/features/runtime_checks.h",
"libcef/renderer/alloy/alloy_content_renderer_client.cc",
"libcef/renderer/alloy/alloy_content_renderer_client.h",
"libcef/renderer/alloy/alloy_render_frame_observer.cc",
"libcef/renderer/alloy/alloy_render_frame_observer.h",
"libcef/renderer/alloy/alloy_render_thread_observer.cc",
"libcef/renderer/alloy/alloy_render_thread_observer.h",
"libcef/renderer/alloy/url_loader_throttle_provider_impl.cc",
"libcef/renderer/alloy/url_loader_throttle_provider_impl.h",
"libcef/renderer/browser_impl.cc", "libcef/renderer/browser_impl.cc",
"libcef/renderer/browser_impl.h", "libcef/renderer/browser_impl.h",
"libcef/renderer/chrome/chrome_content_renderer_client_cef.cc", "libcef/renderer/chrome/chrome_content_renderer_client_cef.cc",
@ -971,6 +862,121 @@ source_set("libcef_static") {
"//chrome/app/chrome_main_delegate.h", "//chrome/app/chrome_main_delegate.h",
] ]
if (enable_alloy_bootstrap) {
sources += [
"libcef/browser/alloy/alloy_browser_context.cc",
"libcef/browser/alloy/alloy_browser_context.h",
"libcef/browser/alloy/alloy_browser_main.cc",
"libcef/browser/alloy/alloy_browser_main.h",
"libcef/browser/alloy/alloy_content_browser_client.cc",
"libcef/browser/alloy/alloy_content_browser_client.h",
"libcef/browser/alloy/alloy_download_manager_delegate.cc",
"libcef/browser/alloy/alloy_download_manager_delegate.h",
"libcef/browser/alloy/alloy_download_util.cc",
"libcef/browser/alloy/alloy_download_util.h",
"libcef/browser/alloy/alloy_web_contents_view_delegate.cc",
"libcef/browser/alloy/alloy_web_contents_view_delegate.h",
"libcef/browser/alloy/devtools/alloy_devtools_window_runner.cc",
"libcef/browser/alloy/devtools/alloy_devtools_window_runner.h",
"libcef/browser/alloy/devtools/devtools_file_manager.cc",
"libcef/browser/alloy/devtools/devtools_file_manager.h",
"libcef/browser/alloy/devtools/devtools_frontend.cc",
"libcef/browser/alloy/devtools/devtools_frontend.h",
"libcef/browser/alloy/devtools/devtools_manager_delegate.cc",
"libcef/browser/alloy/devtools/devtools_manager_delegate.h",
"libcef/browser/alloy/dialogs/alloy_javascript_dialog_manager_delegate.cc",
"libcef/browser/alloy/dialogs/alloy_javascript_dialog_manager_delegate.h",
"libcef/browser/alloy/chrome_browser_process_alloy.cc",
"libcef/browser/alloy/chrome_browser_process_alloy.h",
"libcef/browser/alloy/chrome_profile_manager_alloy.cc",
"libcef/browser/alloy/chrome_profile_manager_alloy.h",
"libcef/browser/alloy/chrome_profile_alloy.cc",
"libcef/browser/alloy/chrome_profile_alloy.h",
"libcef/browser/browser_context_keyed_service_factories.cc",
"libcef/browser/browser_context_keyed_service_factories.h",
"libcef/browser/extension_impl.cc",
"libcef/browser/extension_impl.h",
"libcef/browser/extensions/api/file_system/cef_file_system_delegate.cc",
"libcef/browser/extensions/api/file_system/cef_file_system_delegate.h",
"libcef/browser/extensions/api/storage/sync_value_store_cache.cc",
"libcef/browser/extensions/api/storage/sync_value_store_cache.h",
"libcef/browser/extensions/api/tabs/tabs_api.cc",
"libcef/browser/extensions/api/tabs/tabs_api.h",
"libcef/browser/extensions/alloy_extensions_util.cc",
"libcef/browser/extensions/alloy_extensions_util.h",
"libcef/browser/extensions/browser_platform_delegate_background.cc",
"libcef/browser/extensions/browser_platform_delegate_background.h",
"libcef/browser/extensions/chrome_api_registration.cc",
"libcef/browser/extensions/chrome_api_registration.h",
"libcef/browser/extensions/component_extension_resource_manager.cc",
"libcef/browser/extensions/component_extension_resource_manager.h",
"libcef/browser/extensions/extensions_api_client.cc",
"libcef/browser/extensions/extensions_api_client.h",
"libcef/browser/extensions/extensions_browser_api_provider.cc",
"libcef/browser/extensions/extensions_browser_api_provider.h",
"libcef/browser/extensions/extensions_browser_client.cc",
"libcef/browser/extensions/extensions_browser_client.h",
"libcef/browser/extensions/extension_background_host.cc",
"libcef/browser/extensions/extension_background_host.h",
"libcef/browser/extensions/extension_function_details.cc",
"libcef/browser/extensions/extension_function_details.h",
"libcef/browser/extensions/extension_host_delegate.cc",
"libcef/browser/extensions/extension_host_delegate.h",
"libcef/browser/extensions/extension_system.cc",
"libcef/browser/extensions/extension_system.h",
"libcef/browser/extensions/extension_system_factory.cc",
"libcef/browser/extensions/extension_system_factory.h",
"libcef/browser/extensions/extension_view_host.cc",
"libcef/browser/extensions/extension_view_host.h",
"libcef/browser/extensions/extension_web_contents_observer.cc",
"libcef/browser/extensions/extension_web_contents_observer.h",
"libcef/browser/extensions/mime_handler_view_guest_delegate.cc",
"libcef/browser/extensions/mime_handler_view_guest_delegate.h",
"libcef/browser/extensions/value_store/cef_value_store.cc",
"libcef/browser/extensions/value_store/cef_value_store.h",
"libcef/browser/extensions/value_store/cef_value_store_factory.cc",
"libcef/browser/extensions/value_store/cef_value_store_factory.h",
"libcef/browser/media_capture_devices_dispatcher.cc",
"libcef/browser/media_capture_devices_dispatcher.h",
"libcef/browser/net/devtools_scheme_handler.cc",
"libcef/browser/net/devtools_scheme_handler.h",
"libcef/browser/net/internal_scheme_handler.cc",
"libcef/browser/net/internal_scheme_handler.h",
"libcef/browser/net/scheme_handler.cc",
"libcef/browser/net/scheme_handler.h",
"libcef/browser/prefs/pref_store.cc",
"libcef/browser/prefs/pref_store.h",
"libcef/browser/speech_recognition_manager_delegate.cc",
"libcef/browser/speech_recognition_manager_delegate.h",
"libcef/browser/ssl_host_state_delegate.cc",
"libcef/browser/ssl_host_state_delegate.h",
"libcef/common/alloy/alloy_content_client.cc",
"libcef/common/alloy/alloy_content_client.h",
"libcef/common/alloy/alloy_main_delegate.cc",
"libcef/common/alloy/alloy_main_delegate.h",
"libcef/common/alloy/alloy_main_runner_delegate.cc",
"libcef/common/alloy/alloy_main_runner_delegate.h",
"libcef/common/extensions/chrome_generated_schemas.cc",
"libcef/common/extensions/chrome_generated_schemas.h",
"libcef/common/extensions/extensions_api_provider.cc",
"libcef/common/extensions/extensions_api_provider.h",
"libcef/common/extensions/extensions_client.cc",
"libcef/common/extensions/extensions_client.h",
"libcef/common/extensions/extensions_util.cc",
"libcef/common/extensions/extensions_util.h",
"libcef/common/net/net_resource_provider.cc",
"libcef/common/net/net_resource_provider.h",
"libcef/renderer/alloy/alloy_content_renderer_client.cc",
"libcef/renderer/alloy/alloy_content_renderer_client.h",
"libcef/renderer/alloy/alloy_render_frame_observer.cc",
"libcef/renderer/alloy/alloy_render_frame_observer.h",
"libcef/renderer/alloy/alloy_render_thread_observer.cc",
"libcef/renderer/alloy/alloy_render_thread_observer.h",
"libcef/renderer/alloy/url_loader_throttle_provider_impl.cc",
"libcef/renderer/alloy/url_loader_throttle_provider_impl.h",
]
}
configs += [ configs += [
"libcef/features:config", "libcef/features:config",
"//build/config:precompiled_headers", "//build/config:precompiled_headers",
@ -1268,6 +1274,10 @@ config("libcef_dll_wrapper_config") {
ldflags = [ "/STACK:0x800000" ] ldflags = [ "/STACK:0x800000" ]
} }
} }
if (!enable_alloy_bootstrap) {
defines = [ "DISABLE_ALLOY_BOOTSTRAP" ]
}
} }
# libcef_dll_wrapper target. # libcef_dll_wrapper target.

View File

@ -69,6 +69,13 @@
#if defined(USING_CHROMIUM_INCLUDES) #if defined(USING_CHROMIUM_INCLUDES)
// When building CEF include the Chromium header directly. // When building CEF include the Chromium header directly.
#include "build/build_config.h" #include "build/build_config.h"
#include "cef/libcef/features/features.h"
#if !BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#define DISABLE_ALLOY_BOOTSTRAP 1
#endif
#else // !USING_CHROMIUM_INCLUDES #else // !USING_CHROMIUM_INCLUDES
// The following is substantially similar to the Chromium implementation. // The following is substantially similar to the Chromium implementation.
// If the Chromium implementation diverges the below implementation should be // If the Chromium implementation diverges the below implementation should be

View File

@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=7733ed87ade32dfd311c24c51263d20b9b469868$ // $hash=6ee74f31d37a1b5ab3c9c5ccbe2dce9841329b38$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_BROWSER_CAPI_H_
@ -911,6 +911,8 @@ typedef struct _cef_browser_host_t {
/// Returns the extension hosted in this browser or NULL if no extension is /// Returns the extension hosted in this browser or NULL if no extension is
/// hosted. See cef_request_context_t::LoadExtension for details. /// hosted. See cef_request_context_t::LoadExtension for details.
/// ///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
struct _cef_extension_t*(CEF_CALLBACK* get_extension)( struct _cef_extension_t*(CEF_CALLBACK* get_extension)(
struct _cef_browser_host_t* self); struct _cef_browser_host_t* self);
@ -919,6 +921,8 @@ typedef struct _cef_browser_host_t {
/// script. Background hosts do not have a window and are not displayable. See /// script. Background hosts do not have a window and are not displayable. See
/// cef_request_context_t::LoadExtension for details. /// cef_request_context_t::LoadExtension for details.
/// ///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
int(CEF_CALLBACK* is_background_host)(struct _cef_browser_host_t* self); int(CEF_CALLBACK* is_background_host)(struct _cef_browser_host_t* self);
/// ///

View File

@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=0ca2b788f70f8c9f5b2706d691d8e063be00ed19$ // $hash=634054ad25154c30fb4ec630fe7fb79b0cf1f9b3$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_CAPI_H_
@ -54,6 +54,8 @@ struct _cef_request_context_t;
/// Object representing an extension. Methods may be called on any thread unless /// Object representing an extension. Methods may be called on any thread unless
/// otherwise indicated. /// otherwise indicated.
/// ///
/// WARNING: This API is deprecated and will be removed in ~M127.
///
typedef struct _cef_extension_t { typedef struct _cef_extension_t {
/// ///
/// Base structure. /// Base structure.

View File

@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=5cfff4465a586d2b2ea7b54a9549096faec415f6$ // $hash=ebac34c9b85de780ce7524211c5dd61a80d4576c$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_EXTENSION_HANDLER_CAPI_H_
@ -80,6 +80,8 @@ typedef struct _cef_get_extension_resource_callback_t {
/// cef_request_context_t::LoadExtension for information about extension /// cef_request_context_t::LoadExtension for information about extension
/// loading. /// loading.
/// ///
/// WARNING: This API is deprecated and will be removed in ~M127.
///
typedef struct _cef_extension_handler_t { typedef struct _cef_extension_handler_t {
/// ///
/// Base structure. /// Base structure.

View File

@ -33,7 +33,7 @@
// by hand. See the translator.README.txt file in the tools directory for // by hand. See the translator.README.txt file in the tools directory for
// more information. // more information.
// //
// $hash=7df03921b2ee743fb059f13e545ccf89904eb060$ // $hash=2c496139ca9a59303b1493ee93d2c3ae96a956c0$
// //
#ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_CAPI_H_ #ifndef CEF_INCLUDE_CAPI_CEF_REQUEST_CONTEXT_CAPI_H_
@ -253,6 +253,8 @@ typedef struct _cef_request_context_t {
/// See https://developer.chrome.com/extensions for extension implementation /// See https://developer.chrome.com/extensions for extension implementation
/// and usage documentation. /// and usage documentation.
/// ///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
void(CEF_CALLBACK* load_extension)(struct _cef_request_context_t* self, void(CEF_CALLBACK* load_extension)(struct _cef_request_context_t* self,
const cef_string_t* root_directory, const cef_string_t* root_directory,
struct _cef_dictionary_value_t* manifest, struct _cef_dictionary_value_t* manifest,
@ -264,6 +266,8 @@ typedef struct _cef_request_context_t {
/// access to the extension (see HasExtension). This function must be called /// access to the extension (see HasExtension). This function must be called
/// on the browser process UI thread. /// on the browser process UI thread.
/// ///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
int(CEF_CALLBACK* did_load_extension)(struct _cef_request_context_t* self, int(CEF_CALLBACK* did_load_extension)(struct _cef_request_context_t* self,
const cef_string_t* extension_id); const cef_string_t* extension_id);
@ -273,6 +277,8 @@ typedef struct _cef_request_context_t {
/// extension (see DidLoadExtension). This function must be called on the /// extension (see DidLoadExtension). This function must be called on the
/// browser process UI thread. /// browser process UI thread.
/// ///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
int(CEF_CALLBACK* has_extension)(struct _cef_request_context_t* self, int(CEF_CALLBACK* has_extension)(struct _cef_request_context_t* self,
const cef_string_t* extension_id); const cef_string_t* extension_id);
@ -282,6 +288,8 @@ typedef struct _cef_request_context_t {
/// extension ID values. Returns true (1) on success. This function must be /// extension ID values. Returns true (1) on success. This function must be
/// called on the browser process UI thread. /// called on the browser process UI thread.
/// ///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
int(CEF_CALLBACK* get_extensions)(struct _cef_request_context_t* self, int(CEF_CALLBACK* get_extensions)(struct _cef_request_context_t* self,
cef_string_list_t extension_ids); cef_string_list_t extension_ids);
@ -290,6 +298,8 @@ typedef struct _cef_request_context_t {
/// extension is accessible in this context (see HasExtension). This function /// extension is accessible in this context (see HasExtension). This function
/// must be called on the browser process UI thread. /// must be called on the browser process UI thread.
/// ///
/// WARNING: This function is deprecated and will be removed in ~M127.
///
struct _cef_extension_t*(CEF_CALLBACK* get_extension)( struct _cef_extension_t*(CEF_CALLBACK* get_extension)(
struct _cef_request_context_t* self, struct _cef_request_context_t* self,
const cef_string_t* extension_id); const cef_string_t* extension_id);

View File

@ -42,13 +42,13 @@
// way that may cause binary incompatibility with other builds. The universal // way that may cause binary incompatibility with other builds. The universal
// hash value will change if any platform is affected whereas the platform hash // hash value will change if any platform is affected whereas the platform hash
// values will change only if that particular platform is affected. // values will change only if that particular platform is affected.
#define CEF_API_HASH_UNIVERSAL "73e8743408bfeba0df3b567bfd04b2eb642df11d" #define CEF_API_HASH_UNIVERSAL "c9171db05e2e3ad611ea09d9457edaaa336bd4d6"
#if defined(OS_WIN) #if defined(OS_WIN)
#define CEF_API_HASH_PLATFORM "3a73f4c69062c6f413e00c1821f6e6df91a2a787" #define CEF_API_HASH_PLATFORM "d65aa12068be307fd8e6642024cb67d82643d412"
#elif defined(OS_MAC) #elif defined(OS_MAC)
#define CEF_API_HASH_PLATFORM "f5fb92747082f06a9c42724b0b717accc29e3879" #define CEF_API_HASH_PLATFORM "41e80b4bf45ce56cea0e87e825f9e6b58977a1da"
#elif defined(OS_LINUX) #elif defined(OS_LINUX)
#define CEF_API_HASH_PLATFORM "8775d620c6b17725bddba2c1c3a21353b4d8acb1" #define CEF_API_HASH_PLATFORM "1ed8d88d0d7d9d8a3b0296e9f84fea7752fdff2e"
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -942,6 +942,8 @@ class CefBrowserHost : public virtual CefBaseRefCounted {
/// Returns the extension hosted in this browser or NULL if no extension is /// Returns the extension hosted in this browser or NULL if no extension is
/// hosted. See CefRequestContext::LoadExtension for details. /// hosted. See CefRequestContext::LoadExtension for details.
/// ///
/// WARNING: This method is deprecated and will be removed in ~M127.
///
/*--cef()--*/ /*--cef()--*/
virtual CefRefPtr<CefExtension> GetExtension() = 0; virtual CefRefPtr<CefExtension> GetExtension() = 0;
@ -950,6 +952,8 @@ class CefBrowserHost : public virtual CefBaseRefCounted {
/// Background hosts do not have a window and are not displayable. See /// Background hosts do not have a window and are not displayable. See
/// CefRequestContext::LoadExtension for details. /// CefRequestContext::LoadExtension for details.
/// ///
/// WARNING: This method is deprecated and will be removed in ~M127.
///
/*--cef()--*/ /*--cef()--*/
virtual bool IsBackgroundHost() = 0; virtual bool IsBackgroundHost() = 0;

View File

@ -48,6 +48,8 @@ class CefRequestContext;
/// Object representing an extension. Methods may be called on any thread unless /// Object representing an extension. Methods may be called on any thread unless
/// otherwise indicated. /// otherwise indicated.
/// ///
/// WARNING: This API is deprecated and will be removed in ~M127.
///
/*--cef(source=library)--*/ /*--cef(source=library)--*/
class CefExtension : public CefBaseRefCounted { class CefExtension : public CefBaseRefCounted {
public: public:

View File

@ -70,6 +70,8 @@ class CefGetExtensionResourceCallback : public CefBaseRefCounted {
/// The methods of this class will be called on the UI thread. See /// The methods of this class will be called on the UI thread. See
/// CefRequestContext::LoadExtension for information about extension loading. /// CefRequestContext::LoadExtension for information about extension loading.
/// ///
/// WARNING: This API is deprecated and will be removed in ~M127.
///
/*--cef(source=client)--*/ /*--cef(source=client)--*/
class CefExtensionHandler : public virtual CefBaseRefCounted { class CefExtensionHandler : public virtual CefBaseRefCounted {
public: public:

View File

@ -266,6 +266,8 @@ class CefRequestContext : public CefPreferenceManager {
/// See https://developer.chrome.com/extensions for extension implementation /// See https://developer.chrome.com/extensions for extension implementation
/// and usage documentation. /// and usage documentation.
/// ///
/// WARNING: This method is deprecated and will be removed in ~M127.
///
/*--cef(optional_param=manifest,optional_param=handler)--*/ /*--cef(optional_param=manifest,optional_param=handler)--*/
virtual void LoadExtension(const CefString& root_directory, virtual void LoadExtension(const CefString& root_directory,
CefRefPtr<CefDictionaryValue> manifest, CefRefPtr<CefDictionaryValue> manifest,
@ -277,6 +279,8 @@ class CefRequestContext : public CefPreferenceManager {
/// access to the extension (see HasExtension). This method must be called on /// access to the extension (see HasExtension). This method must be called on
/// the browser process UI thread. /// the browser process UI thread.
/// ///
/// WARNING: This method is deprecated and will be removed in ~M127.
///
/*--cef()--*/ /*--cef()--*/
virtual bool DidLoadExtension(const CefString& extension_id) = 0; virtual bool DidLoadExtension(const CefString& extension_id) = 0;
@ -286,6 +290,8 @@ class CefRequestContext : public CefPreferenceManager {
/// extension (see DidLoadExtension). This method must be called on the /// extension (see DidLoadExtension). This method must be called on the
/// browser process UI thread. /// browser process UI thread.
/// ///
/// WARNING: This method is deprecated and will be removed in ~M127.
///
/*--cef()--*/ /*--cef()--*/
virtual bool HasExtension(const CefString& extension_id) = 0; virtual bool HasExtension(const CefString& extension_id) = 0;
@ -295,6 +301,8 @@ class CefRequestContext : public CefPreferenceManager {
/// extension ID values. Returns true on success. This method must be called /// extension ID values. Returns true on success. This method must be called
/// on the browser process UI thread. /// on the browser process UI thread.
/// ///
/// WARNING: This method is deprecated and will be removed in ~M127.
///
/*--cef()--*/ /*--cef()--*/
virtual bool GetExtensions(std::vector<CefString>& extension_ids) = 0; virtual bool GetExtensions(std::vector<CefString>& extension_ids) = 0;
@ -303,6 +311,8 @@ class CefRequestContext : public CefPreferenceManager {
/// extension is accessible in this context (see HasExtension). This method /// extension is accessible in this context (see HasExtension). This method
/// must be called on the browser process UI thread. /// must be called on the browser process UI thread.
/// ///
/// WARNING: This method is deprecated and will be removed in ~M127.
///
/*--cef()--*/ /*--cef()--*/
virtual CefRefPtr<CefExtension> GetExtension( virtual CefRefPtr<CefExtension> GetExtension(
const CefString& extension_id) = 0; const CefString& extension_id) = 0;

View File

@ -235,12 +235,14 @@ typedef struct _cef_settings_t {
/// ///
cef_string_t main_bundle_path; cef_string_t main_bundle_path;
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
/// ///
/// Set to true (1) to enable use of the Chrome runtime in CEF. This feature /// Set to true (1) to enable use of the Chrome runtime in CEF. This feature
/// is considered experimental and is not recommended for most users at this /// is considered experimental and is not recommended for most users at this
/// time. See issue #2969 for details. /// time. See issue #2969 for details.
/// ///
int chrome_runtime; int chrome_runtime;
#endif
/// ///
/// Set to true (1) to have the browser process message loop run in a separate /// Set to true (1) to have the browser process message loop run in a separate

View File

@ -387,7 +387,9 @@ struct CefSettingsTraits {
&target->framework_dir_path, copy); &target->framework_dir_path, copy);
cef_string_set(src->main_bundle_path.str, src->main_bundle_path.length, cef_string_set(src->main_bundle_path.str, src->main_bundle_path.length,
&target->main_bundle_path, copy); &target->main_bundle_path, copy);
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
target->chrome_runtime = src->chrome_runtime; target->chrome_runtime = src->chrome_runtime;
#endif
target->multi_threaded_message_loop = src->multi_threaded_message_loop; target->multi_threaded_message_loop = src->multi_threaded_message_loop;
target->external_message_pump = src->external_message_pump; target->external_message_pump = src->external_message_pump;
target->windowless_rendering_enabled = src->windowless_rendering_enabled; target->windowless_rendering_enabled = src->windowless_rendering_enabled;

View File

@ -50,10 +50,13 @@
#include "content/public/common/input/native_web_keyboard_event.h" #include "content/public/common/input/native_web_keyboard_event.h"
#include "content/public/common/url_constants.h" #include "content/public/common/url_constants.h"
#include "extensions/common/constants.h" #include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "net/base/net_errors.h" #include "net/base/net_errors.h"
#include "ui/events/base_event_utils.h" #include "ui/events/base_event_utils.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "extensions/common/extension.h"
#endif
using content::KeyboardEventProcessingResult; using content::KeyboardEventProcessingResult;
namespace { namespace {
@ -75,7 +78,11 @@ CefRefPtr<AlloyBrowserHostImpl> AlloyBrowserHostImpl::Create(
// Expect runtime style to match. // Expect runtime style to match.
CHECK(platform_delegate->IsAlloyStyle()); CHECK(platform_delegate->IsAlloyStyle());
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
const bool is_devtools_popup = !!create_params.devtools_opener; const bool is_devtools_popup = !!create_params.devtools_opener;
#else
const bool is_devtools_popup = false;
#endif
scoped_refptr<CefBrowserInfo> info = scoped_refptr<CefBrowserInfo> info =
CefBrowserInfoManager::GetInstance()->CreateBrowserInfo( CefBrowserInfoManager::GetInstance()->CreateBrowserInfo(
@ -92,6 +99,7 @@ CefRefPtr<AlloyBrowserHostImpl> AlloyBrowserHostImpl::Create(
auto request_context_impl = auto request_context_impl =
static_cast<CefRequestContextImpl*>(create_params.request_context.get()); static_cast<CefRequestContextImpl*>(create_params.request_context.get());
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
CefRefPtr<CefExtension> cef_extension; CefRefPtr<CefExtension> cef_extension;
if (create_params.extension) { if (create_params.extension) {
auto cef_browser_context = request_context_impl->GetBrowserContext(); auto cef_browser_context = request_context_impl->GetBrowserContext();
@ -99,24 +107,39 @@ CefRefPtr<AlloyBrowserHostImpl> AlloyBrowserHostImpl::Create(
cef_browser_context->GetExtension(create_params.extension->id()); cef_browser_context->GetExtension(create_params.extension->id());
CHECK(cef_extension); CHECK(cef_extension);
} }
#endif
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
auto platform_delegate_ptr = platform_delegate.get(); auto platform_delegate_ptr = platform_delegate.get();
#endif
CefRefPtr<AlloyBrowserHostImpl> browser = CreateInternal( CefRefPtr<AlloyBrowserHostImpl> browser = CreateInternal(
create_params.settings, create_params.client, web_contents, create_params.settings, create_params.client, web_contents,
own_web_contents, info, FromBaseChecked(create_params.devtools_opener), own_web_contents, info,
is_devtools_popup, request_context_impl, std::move(platform_delegate), #if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
cef_extension); FromBaseChecked(create_params.devtools_opener),
#else
/*opener=*/nullptr,
#endif
is_devtools_popup, request_context_impl, std::move(platform_delegate)
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
,
cef_extension
#endif
);
if (!browser) { if (!browser) {
return nullptr; return nullptr;
} }
GURL url = url_util::MakeGURL(create_params.url, /*fixup=*/true); GURL url = url_util::MakeGURL(create_params.url, /*fixup=*/true);
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (create_params.extension) { if (create_params.extension) {
platform_delegate_ptr->CreateExtensionHost( platform_delegate_ptr->CreateExtensionHost(
create_params.extension, url, create_params.extension_host_type); create_params.extension, url, create_params.extension_host_type);
} else if (!url.is_empty()) { } else
#endif
if (!url.is_empty()) {
content::OpenURLParams params(url, content::Referrer(), content::OpenURLParams params(url, content::Referrer(),
WindowOpenDisposition::CURRENT_TAB, WindowOpenDisposition::CURRENT_TAB,
CefFrameHostImpl::kPageTransitionExplicit, CefFrameHostImpl::kPageTransitionExplicit,
@ -137,8 +160,12 @@ CefRefPtr<AlloyBrowserHostImpl> AlloyBrowserHostImpl::CreateInternal(
CefRefPtr<AlloyBrowserHostImpl> opener, CefRefPtr<AlloyBrowserHostImpl> opener,
bool is_devtools_popup, bool is_devtools_popup,
CefRefPtr<CefRequestContextImpl> request_context, CefRefPtr<CefRequestContextImpl> request_context,
std::unique_ptr<CefBrowserPlatformDelegate> platform_delegate, std::unique_ptr<CefBrowserPlatformDelegate> platform_delegate
CefRefPtr<CefExtension> extension) { #if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
,
CefRefPtr<CefExtension> extension
#endif
) {
CEF_REQUIRE_UIT(); CEF_REQUIRE_UIT();
DCHECK(web_contents); DCHECK(web_contents);
DCHECK(browser_info); DCHECK(browser_info);
@ -169,7 +196,12 @@ CefRefPtr<AlloyBrowserHostImpl> AlloyBrowserHostImpl::CreateInternal(
CefRefPtr<AlloyBrowserHostImpl> browser = new AlloyBrowserHostImpl( CefRefPtr<AlloyBrowserHostImpl> browser = new AlloyBrowserHostImpl(
settings, client, web_contents, browser_info, opener, request_context, settings, client, web_contents, browser_info, opener, request_context,
std::move(platform_delegate), extension); std::move(platform_delegate)
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
,
extension
#endif
);
browser->InitializeBrowser(); browser->InitializeBrowser();
if (!browser->CreateHostWindow()) { if (!browser->CreateHostWindow()) {
@ -352,6 +384,7 @@ void AlloyBrowserHostImpl::SetAutoResizeEnabled(bool enabled,
} }
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
CefRefPtr<CefExtension> AlloyBrowserHostImpl::GetExtension() { CefRefPtr<CefExtension> AlloyBrowserHostImpl::GetExtension() {
return extension_; return extension_;
} }
@ -359,6 +392,7 @@ CefRefPtr<CefExtension> AlloyBrowserHostImpl::GetExtension() {
bool AlloyBrowserHostImpl::IsBackgroundHost() { bool AlloyBrowserHostImpl::IsBackgroundHost() {
return is_background_host_; return is_background_host_;
} }
#endif
bool AlloyBrowserHostImpl::CanExecuteChromeCommand(int command_id) { bool AlloyBrowserHostImpl::CanExecuteChromeCommand(int command_id) {
return false; return false;
@ -626,11 +660,13 @@ bool AlloyBrowserHostImpl::MaybeAllowNavigation(
return true; return true;
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
extensions::ExtensionHost* AlloyBrowserHostImpl::GetExtensionHost() const { extensions::ExtensionHost* AlloyBrowserHostImpl::GetExtensionHost() const {
CEF_REQUIRE_UIT(); CEF_REQUIRE_UIT();
DCHECK(platform_delegate_); DCHECK(platform_delegate_);
return platform_delegate_->GetExtensionHost(); return platform_delegate_->GetExtensionHost();
} }
#endif
void AlloyBrowserHostImpl::OnSetFocus(cef_focus_source_t source) { void AlloyBrowserHostImpl::OnSetFocus(cef_focus_source_t source) {
if (!CEF_CURRENTLY_ON_UIT()) { if (!CEF_CURRENTLY_ON_UIT()) {
@ -942,11 +978,13 @@ content::WebContents* AlloyBrowserHostImpl::OpenURLFromTab(
return nullptr; return nullptr;
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool AlloyBrowserHostImpl::ShouldAllowRendererInitiatedCrossProcessNavigation( bool AlloyBrowserHostImpl::ShouldAllowRendererInitiatedCrossProcessNavigation(
bool is_main_frame_navigation) { bool is_main_frame_navigation) {
return platform_delegate_->ShouldAllowRendererInitiatedCrossProcessNavigation( return platform_delegate_->ShouldAllowRendererInitiatedCrossProcessNavigation(
is_main_frame_navigation); is_main_frame_navigation);
} }
#endif
void AlloyBrowserHostImpl::AddNewContents( void AlloyBrowserHostImpl::AddNewContents(
content::WebContents* source, content::WebContents* source,
@ -1088,11 +1126,13 @@ bool AlloyBrowserHostImpl::HandleKeyboardEvent(
return false; return false;
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool AlloyBrowserHostImpl::PreHandleGestureEvent( bool AlloyBrowserHostImpl::PreHandleGestureEvent(
content::WebContents* source, content::WebContents* source,
const blink::WebGestureEvent& event) { const blink::WebGestureEvent& event) {
return platform_delegate_->PreHandleGestureEvent(source, event); return platform_delegate_->PreHandleGestureEvent(source, event);
} }
#endif
bool AlloyBrowserHostImpl::CanDragEnter(content::WebContents* source, bool AlloyBrowserHostImpl::CanDragEnter(content::WebContents* source,
const content::DropData& data, const content::DropData& data,
@ -1164,10 +1204,14 @@ void AlloyBrowserHostImpl::WebContentsCreated(
// We don't officially own |new_contents| until AddNewContents() is called. // We don't officially own |new_contents| until AddNewContents() is called.
// However, we need to install observers/delegates here. // However, we need to install observers/delegates here.
CefRefPtr<AlloyBrowserHostImpl> browser = CefRefPtr<AlloyBrowserHostImpl> browser = CreateInternal(
CreateInternal(settings, client, new_contents, /*own_web_contents=*/false, settings, client, new_contents, /*own_web_contents=*/false, info, opener,
info, opener, /*is_devtools_popup=*/false, request_context, /*is_devtools_popup=*/false, request_context, std::move(platform_delegate)
std::move(platform_delegate), /*extension=*/nullptr); #if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
,
/*extension=*/nullptr
#endif
);
} }
void AlloyBrowserHostImpl::RendererUnresponsive( void AlloyBrowserHostImpl::RendererUnresponsive(
@ -1255,10 +1299,12 @@ bool AlloyBrowserHostImpl::CheckMediaAccessPermission(
security_origin, type); security_origin, type);
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool AlloyBrowserHostImpl::IsNeverComposited( bool AlloyBrowserHostImpl::IsNeverComposited(
content::WebContents* web_contents) { content::WebContents* web_contents) {
return platform_delegate_->IsNeverComposited(web_contents); return platform_delegate_->IsNeverComposited(web_contents);
} }
#endif
content::PictureInPictureResult AlloyBrowserHostImpl::EnterPictureInPicture( content::PictureInPictureResult AlloyBrowserHostImpl::EnterPictureInPicture(
content::WebContents* web_contents) { content::WebContents* web_contents) {
@ -1276,8 +1322,12 @@ void AlloyBrowserHostImpl::ExitPictureInPicture() {
} }
bool AlloyBrowserHostImpl::IsBackForwardCacheSupported() { bool AlloyBrowserHostImpl::IsBackForwardCacheSupported() {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
return true;
#else
// Disabled with Alloy bootstrap due to issue #3237. // Disabled with Alloy bootstrap due to issue #3237.
return cef::IsChromeRuntimeEnabled(); return cef::IsChromeRuntimeEnabled();
#endif
} }
content::PreloadingEligibility AlloyBrowserHostImpl::IsPrerender2Supported( content::PreloadingEligibility AlloyBrowserHostImpl::IsPrerender2Supported(
@ -1399,8 +1449,12 @@ AlloyBrowserHostImpl::AlloyBrowserHostImpl(
scoped_refptr<CefBrowserInfo> browser_info, scoped_refptr<CefBrowserInfo> browser_info,
CefRefPtr<AlloyBrowserHostImpl> opener, CefRefPtr<AlloyBrowserHostImpl> opener,
CefRefPtr<CefRequestContextImpl> request_context, CefRefPtr<CefRequestContextImpl> request_context,
std::unique_ptr<CefBrowserPlatformDelegate> platform_delegate, std::unique_ptr<CefBrowserPlatformDelegate> platform_delegate
CefRefPtr<CefExtension> extension) #if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
,
CefRefPtr<CefExtension> extension
#endif
)
: CefBrowserHostBase(settings, : CefBrowserHostBase(settings,
client, client,
std::move(platform_delegate), std::move(platform_delegate),
@ -1408,8 +1462,12 @@ AlloyBrowserHostImpl::AlloyBrowserHostImpl(
request_context), request_context),
content::WebContentsObserver(web_contents), content::WebContentsObserver(web_contents),
opener_(kNullWindowHandle), opener_(kNullWindowHandle),
is_windowless_(platform_delegate_->IsWindowless()), is_windowless_(platform_delegate_->IsWindowless())
extension_(extension) { #if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
,
extension_(extension)
#endif
{
contents_delegate_->ObserveWebContents(web_contents); contents_delegate_->ObserveWebContents(web_contents);
if (opener.get() && !is_views_hosted_) { if (opener.get() && !is_views_hosted_) {

View File

@ -25,7 +25,10 @@
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h" #include "content/public/browser/web_contents_delegate.h"
#include "content/public/browser/web_contents_observer.h" #include "content/public/browser/web_contents_observer.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "extensions/common/mojom/view_type.mojom-forward.h" #include "extensions/common/mojom/view_type.mojom-forward.h"
#endif
class CefAudioCapturer; class CefAudioCapturer;
class CefBrowserInfo; class CefBrowserInfo;
@ -123,8 +126,10 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase,
void SetAutoResizeEnabled(bool enabled, void SetAutoResizeEnabled(bool enabled,
const CefSize& min_size, const CefSize& min_size,
const CefSize& max_size) override; const CefSize& max_size) override;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
CefRefPtr<CefExtension> GetExtension() override; CefRefPtr<CefExtension> GetExtension() override;
bool IsBackgroundHost() override; bool IsBackgroundHost() override;
#endif
bool CanExecuteChromeCommand(int command_id) override; bool CanExecuteChromeCommand(int command_id) override;
void ExecuteChromeCommand(int command_id, void ExecuteChromeCommand(int command_id,
cef_window_open_disposition_t disposition) override; cef_window_open_disposition_t disposition) override;
@ -166,8 +171,10 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase,
void UpdateDragOperation(ui::mojom::DragOperation operation, void UpdateDragOperation(ui::mojom::DragOperation operation,
bool document_is_handling_drag); bool document_is_handling_drag);
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Accessors that must be called on the UI thread. // Accessors that must be called on the UI thread.
extensions::ExtensionHost* GetExtensionHost() const; extensions::ExtensionHost* GetExtensionHost() const;
#endif
void OnSetFocus(cef_focus_source_t source) override; void OnSetFocus(cef_focus_source_t source) override;
@ -187,8 +194,10 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase,
const content::OpenURLParams& params, const content::OpenURLParams& params,
base::OnceCallback<void(content::NavigationHandle&)> base::OnceCallback<void(content::NavigationHandle&)>
navigation_handle_callback) override; navigation_handle_callback) override;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool ShouldAllowRendererInitiatedCrossProcessNavigation( bool ShouldAllowRendererInitiatedCrossProcessNavigation(
bool is_main_frame_navigation) override; bool is_main_frame_navigation) override;
#endif
void AddNewContents(content::WebContents* source, void AddNewContents(content::WebContents* source,
std::unique_ptr<content::WebContents> new_contents, std::unique_ptr<content::WebContents> new_contents,
const GURL& target_url, const GURL& target_url,
@ -219,8 +228,10 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase,
bool HandleKeyboardEvent( bool HandleKeyboardEvent(
content::WebContents* source, content::WebContents* source,
const content::NativeWebKeyboardEvent& event) override; const content::NativeWebKeyboardEvent& event) override;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool PreHandleGestureEvent(content::WebContents* source, bool PreHandleGestureEvent(content::WebContents* source,
const blink::WebGestureEvent& event) override; const blink::WebGestureEvent& event) override;
#endif
bool CanDragEnter(content::WebContents* source, bool CanDragEnter(content::WebContents* source,
const content::DropData& data, const content::DropData& data,
blink::DragOperationsMask operations_allowed) override; blink::DragOperationsMask operations_allowed) override;
@ -274,7 +285,9 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase,
bool CheckMediaAccessPermission(content::RenderFrameHost* render_frame_host, bool CheckMediaAccessPermission(content::RenderFrameHost* render_frame_host,
const url::Origin& security_origin, const url::Origin& security_origin,
blink::mojom::MediaStreamType type) override; blink::mojom::MediaStreamType type) override;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool IsNeverComposited(content::WebContents* web_contents) override; bool IsNeverComposited(content::WebContents* web_contents) override;
#endif
content::PictureInPictureResult EnterPictureInPicture( content::PictureInPictureResult EnterPictureInPicture(
content::WebContents* web_contents) override; content::WebContents* web_contents) override;
void ExitPictureInPicture() override; void ExitPictureInPicture() override;
@ -309,8 +322,12 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase,
CefRefPtr<AlloyBrowserHostImpl> opener, CefRefPtr<AlloyBrowserHostImpl> opener,
bool is_devtools_popup, bool is_devtools_popup,
CefRefPtr<CefRequestContextImpl> request_context, CefRefPtr<CefRequestContextImpl> request_context,
std::unique_ptr<CefBrowserPlatformDelegate> platform_delegate, std::unique_ptr<CefBrowserPlatformDelegate> platform_delegate
CefRefPtr<CefExtension> extension); #if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
,
CefRefPtr<CefExtension> extension
#endif
);
AlloyBrowserHostImpl( AlloyBrowserHostImpl(
const CefBrowserSettings& settings, const CefBrowserSettings& settings,
@ -319,8 +336,12 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase,
scoped_refptr<CefBrowserInfo> browser_info, scoped_refptr<CefBrowserInfo> browser_info,
CefRefPtr<AlloyBrowserHostImpl> opener, CefRefPtr<AlloyBrowserHostImpl> opener,
CefRefPtr<CefRequestContextImpl> request_context, CefRefPtr<CefRequestContextImpl> request_context,
std::unique_ptr<CefBrowserPlatformDelegate> platform_delegate, std::unique_ptr<CefBrowserPlatformDelegate> platform_delegate
CefRefPtr<CefExtension> extension); #if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
,
CefRefPtr<CefExtension> extension
#endif
);
// Give the platform delegate an opportunity to create the host window. // Give the platform delegate an opportunity to create the host window.
bool CreateHostWindow(); bool CreateHostWindow();
@ -331,8 +352,10 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase,
CefWindowHandle opener_; CefWindowHandle opener_;
const bool is_windowless_; const bool is_windowless_;
CefWindowHandle host_window_handle_ = kNullWindowHandle; CefWindowHandle host_window_handle_ = kNullWindowHandle;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
CefRefPtr<CefExtension> extension_; CefRefPtr<CefExtension> extension_;
bool is_background_host_ = false; bool is_background_host_ = false;
#endif
// Represents the current browser destruction state. Only accessed on the UI // Represents the current browser destruction state. Only accessed on the UI
// thread. // thread.

View File

@ -6,6 +6,8 @@
#define CEF_LIBCEF_BROWSER_ALLOY_ALLOY_DOWNLOAD_UTIL_H_ #define CEF_LIBCEF_BROWSER_ALLOY_ALLOY_DOWNLOAD_UTIL_H_
#pragma once #pragma once
#include "cef/libcef/features/features.h"
class DownloadPrefs; class DownloadPrefs;
namespace content { namespace content {

View File

@ -7,37 +7,55 @@
#include <memory> #include <memory>
#include "libcef/browser/alloy/alloy_browser_host_impl.h" #include "libcef/browser/alloy/alloy_browser_host_impl.h"
#include "libcef/browser/alloy/dialogs/alloy_javascript_dialog_manager_delegate.h"
#include "libcef/browser/extensions/browser_extensions_util.h"
#include "libcef/browser/extensions/extension_background_host.h" #include "libcef/browser/extensions/extension_background_host.h"
#include "libcef/browser/extensions/extension_system.h" #include "libcef/browser/extensions/extension_system.h"
#include "libcef/browser/extensions/extension_view_host.h" #include "libcef/browser/extensions/extension_view_host.h"
#include "libcef/browser/extensions/extension_web_contents_observer.h" #include "libcef/browser/extensions/extension_web_contents_observer.h"
#include "libcef/common/extensions/extensions_util.h" #include "libcef/common/extensions/extensions_util.h"
#include "libcef/common/net/url_util.h" #include "libcef/common/net/url_util.h"
#include "libcef/features/runtime_checks.h"
#include "base/logging.h" #include "base/logging.h"
#include "chrome/browser/printing/printing_init.h" #include "cef/libcef/features/features.h"
#include "chrome/browser/task_manager/web_contents_tags.h" #include "chrome/browser/task_manager/web_contents_tags.h"
#include "chrome/browser/ui/prefs/prefs_tab_helper.h"
#include "chrome/browser/ui/tab_helpers.h" #include "chrome/browser/ui/tab_helpers.h"
#include "components/find_in_page/find_tab_helper.h" #include "components/find_in_page/find_tab_helper.h"
#include "components/find_in_page/find_types.h" #include "components/find_in_page/find_types.h"
#include "components/javascript_dialogs/tab_modal_dialog_manager.h"
#include "components/performance_manager/embedder/performance_manager_registry.h" #include "components/performance_manager/embedder/performance_manager_registry.h"
#include "components/permissions/permission_request_manager.h"
#include "components/zoom/zoom_controller.h"
#include "content/browser/renderer_host/render_widget_host_impl.h" #include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/public/browser/render_view_host.h" #include "content/public/browser/render_view_host.h"
#include "extensions/browser/process_manager.h" #include "extensions/browser/process_manager.h"
#include "pdf/pdf_features.h" #include "pdf/pdf_features.h"
#include "third_party/blink/public/mojom/frame/find_in_page.mojom.h" #include "third_party/blink/public/mojom/frame/find_in_page.mojom.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "libcef/browser/alloy/dialogs/alloy_javascript_dialog_manager_delegate.h"
#include "libcef/features/runtime_checks.h"
#include "chrome/browser/printing/printing_init.h"
#include "chrome/browser/ui/prefs/prefs_tab_helper.h"
#include "components/javascript_dialogs/tab_modal_dialog_manager.h"
#include "components/permissions/permission_request_manager.h"
#include "components/zoom/zoom_controller.h"
#include "extensions/browser/extension_registry.h"
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
namespace { namespace {
const char kAttachedHelpersUserDataKey[] = "CefAttachedHelpers"; const char kAttachedHelpersUserDataKey[] = "CefAttachedHelpers";
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
const extensions::Extension* GetExtensionForUrl(
content::BrowserContext* browser_context,
const GURL& url) {
auto* registry = extensions::ExtensionRegistry::Get(browser_context);
if (!registry) {
return nullptr;
}
std::string extension_id = url.host();
return registry->enabled_extensions().GetByID(extension_id);
}
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
} // namespace } // namespace
CefBrowserPlatformDelegateAlloy::CefBrowserPlatformDelegateAlloy() CefBrowserPlatformDelegateAlloy::CefBrowserPlatformDelegateAlloy()
@ -58,13 +76,13 @@ content::WebContents* CefBrowserPlatformDelegateAlloy::CreateWebContents(
CHECK(browser_context); CHECK(browser_context);
scoped_refptr<content::SiteInstance> site_instance; scoped_refptr<content::SiteInstance> site_instance;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (extensions::ExtensionsEnabled() && !create_params.url.empty()) { if (extensions::ExtensionsEnabled() && !create_params.url.empty()) {
GURL gurl = url_util::MakeGURL(create_params.url, /*fixup=*/true); GURL gurl = url_util::MakeGURL(create_params.url, /*fixup=*/true);
if (!create_params.extension) { if (!create_params.extension) {
// We might be loading an extension app view where the extension URL is // We might be loading an extension app view where the extension URL is
// provided by the client. // provided by the client.
create_params.extension = create_params.extension = GetExtensionForUrl(browser_context, gurl);
extensions::GetExtensionForUrl(browser_context, gurl);
} }
if (create_params.extension) { if (create_params.extension) {
if (create_params.extension_host_type == if (create_params.extension_host_type ==
@ -85,6 +103,7 @@ content::WebContents* CefBrowserPlatformDelegateAlloy::CreateWebContents(
DCHECK(site_instance); DCHECK(site_instance);
} }
} }
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
content::WebContents::CreateParams wc_create_params(browser_context, content::WebContents::CreateParams wc_create_params(browser_context,
site_instance); site_instance);
@ -138,13 +157,16 @@ void CefBrowserPlatformDelegateAlloy::AddNewContents(
return; return;
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (extension_host_) { if (extension_host_) {
extension_host_->AddNewContents(source, std::move(new_contents), target_url, extension_host_->AddNewContents(source, std::move(new_contents), target_url,
disposition, window_features, user_gesture, disposition, window_features, user_gesture,
was_blocked); was_blocked);
} }
#endif
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool CefBrowserPlatformDelegateAlloy:: bool CefBrowserPlatformDelegateAlloy::
ShouldAllowRendererInitiatedCrossProcessNavigation( ShouldAllowRendererInitiatedCrossProcessNavigation(
bool is_main_frame_navigation) { bool is_main_frame_navigation) {
@ -154,6 +176,7 @@ bool CefBrowserPlatformDelegateAlloy::
} }
return true; return true;
} }
#endif
void CefBrowserPlatformDelegateAlloy::RenderViewReady() { void CefBrowserPlatformDelegateAlloy::RenderViewReady() {
ConfigureAutoResize(); ConfigureAutoResize();
@ -179,6 +202,7 @@ void CefBrowserPlatformDelegateAlloy::BrowserCreated(
std::make_unique<AlloyWebContentsDialogHelper>(web_contents_, this); std::make_unique<AlloyWebContentsDialogHelper>(web_contents_, this);
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void CefBrowserPlatformDelegateAlloy::CreateExtensionHost( void CefBrowserPlatformDelegateAlloy::CreateExtensionHost(
const extensions::Extension* extension, const extensions::Extension* extension,
const GURL& url, const GURL& url,
@ -219,11 +243,14 @@ extensions::ExtensionHost* CefBrowserPlatformDelegateAlloy::GetExtensionHost()
const { const {
return extension_host_; return extension_host_;
} }
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void CefBrowserPlatformDelegateAlloy::BrowserDestroyed( void CefBrowserPlatformDelegateAlloy::BrowserDestroyed(
CefBrowserHostBase* browser) { CefBrowserHostBase* browser) {
if (primary_) { if (primary_) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
DestroyExtensionHost(); DestroyExtensionHost();
#endif
owned_web_contents_.reset(); owned_web_contents_.reset();
} }
@ -265,6 +292,7 @@ void CefBrowserPlatformDelegateAlloy::NotifyMoveOrResizeStarted() {
} }
#endif #endif
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool CefBrowserPlatformDelegateAlloy::PreHandleGestureEvent( bool CefBrowserPlatformDelegateAlloy::PreHandleGestureEvent(
content::WebContents* source, content::WebContents* source,
const blink::WebGestureEvent& event) { const blink::WebGestureEvent& event) {
@ -281,6 +309,7 @@ bool CefBrowserPlatformDelegateAlloy::IsNeverComposited(
} }
return false; return false;
} }
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void CefBrowserPlatformDelegateAlloy::SetAutoResizeEnabled( void CefBrowserPlatformDelegateAlloy::SetAutoResizeEnabled(
bool enabled, bool enabled,
@ -377,6 +406,7 @@ void CefBrowserPlatformDelegateAlloy::SetOwnedWebContents(
owned_web_contents_.reset(owned_contents); owned_web_contents_.reset(owned_contents);
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void CefBrowserPlatformDelegateAlloy::DestroyExtensionHost() { void CefBrowserPlatformDelegateAlloy::DestroyExtensionHost() {
if (!extension_host_) { if (!extension_host_) {
return; return;
@ -402,6 +432,7 @@ void CefBrowserPlatformDelegateAlloy::OnExtensionHostDeleted() {
DCHECK(extension_host_); DCHECK(extension_host_);
extension_host_ = nullptr; extension_host_ = nullptr;
} }
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void CefBrowserPlatformDelegateAlloy::AttachHelpers( void CefBrowserPlatformDelegateAlloy::AttachHelpers(
content::WebContents* web_contents) { content::WebContents* web_contents) {
@ -416,6 +447,7 @@ void CefBrowserPlatformDelegateAlloy::AttachHelpers(
web_contents->SetUserData(&kAttachedHelpersUserDataKey, web_contents->SetUserData(&kAttachedHelpersUserDataKey,
std::make_unique<base::SupportsUserData::Data>()); std::make_unique<base::SupportsUserData::Data>());
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Create all the helpers. // Create all the helpers.
if (cef::IsAlloyRuntimeEnabled()) { if (cef::IsAlloyRuntimeEnabled()) {
find_in_page::FindTabHelper::CreateForWebContents(web_contents); find_in_page::FindTabHelper::CreateForWebContents(web_contents);
@ -427,7 +459,9 @@ void CefBrowserPlatformDelegateAlloy::AttachHelpers(
javascript_dialogs::TabModalDialogManager::CreateForWebContents( javascript_dialogs::TabModalDialogManager::CreateForWebContents(
web_contents, CreateAlloyJavaScriptTabModalDialogManagerDelegateDesktop( web_contents, CreateAlloyJavaScriptTabModalDialogManagerDelegateDesktop(
web_contents)); web_contents));
} else { } else
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
{
if (IsWindowless()) { if (IsWindowless()) {
// Logic from ChromeContentBrowserClientCef::GetWebContentsViewDelegate // Logic from ChromeContentBrowserClientCef::GetWebContentsViewDelegate
// which is not called for windowless browsers. Needs to be done before // which is not called for windowless browsers. Needs to be done before

View File

@ -33,14 +33,18 @@ class CefBrowserPlatformDelegateAlloy : public CefBrowserPlatformDelegate {
const blink::mojom::WindowFeatures& window_features, const blink::mojom::WindowFeatures& window_features,
bool user_gesture, bool user_gesture,
bool* was_blocked) override; bool* was_blocked) override;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool ShouldAllowRendererInitiatedCrossProcessNavigation( bool ShouldAllowRendererInitiatedCrossProcessNavigation(
bool is_main_frame_navigation) override; bool is_main_frame_navigation) override;
#endif
void RenderViewReady() override; void RenderViewReady() override;
void BrowserCreated(CefBrowserHostBase* browser) override; void BrowserCreated(CefBrowserHostBase* browser) override;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void CreateExtensionHost(const extensions::Extension* extension, void CreateExtensionHost(const extensions::Extension* extension,
const GURL& url, const GURL& url,
extensions::mojom::ViewType host_type) override; extensions::mojom::ViewType host_type) override;
extensions::ExtensionHost* GetExtensionHost() const override; extensions::ExtensionHost* GetExtensionHost() const override;
#endif
void BrowserDestroyed(CefBrowserHostBase* browser) override; void BrowserDestroyed(CefBrowserHostBase* browser) override;
web_modal::WebContentsModalDialogHost* GetWebContentsModalDialogHost() web_modal::WebContentsModalDialogHost* GetWebContentsModalDialogHost()
const override; const override;
@ -48,9 +52,11 @@ class CefBrowserPlatformDelegateAlloy : public CefBrowserPlatformDelegate {
#if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC)) #if BUILDFLAG(IS_WIN) || (BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC))
void NotifyMoveOrResizeStarted() override; void NotifyMoveOrResizeStarted() override;
#endif #endif
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool PreHandleGestureEvent(content::WebContents* source, bool PreHandleGestureEvent(content::WebContents* source,
const blink::WebGestureEvent& event) override; const blink::WebGestureEvent& event) override;
bool IsNeverComposited(content::WebContents* web_contents) override; bool IsNeverComposited(content::WebContents* web_contents) override;
#endif
bool IsAlloyStyle() const override { return true; } bool IsAlloyStyle() const override { return true; }
void SetAutoResizeEnabled(bool enabled, void SetAutoResizeEnabled(bool enabled,
const CefSize& min_size, const CefSize& min_size,
@ -83,8 +89,10 @@ class CefBrowserPlatformDelegateAlloy : public CefBrowserPlatformDelegate {
private: private:
void SetOwnedWebContents(content::WebContents* owned_contents); void SetOwnedWebContents(content::WebContents* owned_contents);
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void DestroyExtensionHost(); void DestroyExtensionHost();
void OnExtensionHostDeleted(); void OnExtensionHostDeleted();
#endif
void ConfigureAutoResize(); void ConfigureAutoResize();
@ -105,9 +113,11 @@ class CefBrowserPlatformDelegateAlloy : public CefBrowserPlatformDelegate {
// matches, the find selection rectangle, etc. // matches, the find selection rectangle, etc.
find_in_page::FindNotificationDetails last_search_result_; find_in_page::FindNotificationDetails last_search_result_;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Used when the browser is hosting an extension. // Used when the browser is hosting an extension.
extensions::ExtensionHost* extension_host_ = nullptr; extensions::ExtensionHost* extension_host_ = nullptr;
bool is_background_host_ = false; bool is_background_host_ = false;
#endif
// Used with auto-resize. // Used with auto-resize.
bool auto_resize_enabled_ = false; bool auto_resize_enabled_ = false;

View File

@ -366,6 +366,7 @@ void CefBrowserContext::ClearSchemeHandlerFactories() {
iothread_state_)); iothread_state_));
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void CefBrowserContext::LoadExtension( void CefBrowserContext::LoadExtension(
const CefString& root_directory, const CefString& root_directory,
CefRefPtr<CefDictionaryValue> manifest, CefRefPtr<CefDictionaryValue> manifest,
@ -392,6 +393,7 @@ bool CefBrowserContext::UnloadExtension(const CefString& extension_id) {
NOTIMPLEMENTED(); NOTIMPLEMENTED();
return false; return false;
} }
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
network::mojom::NetworkContext* CefBrowserContext::GetNetworkContext() { network::mojom::NetworkContext* CefBrowserContext::GetNetworkContext() {
CEF_REQUIRE_UIT(); CEF_REQUIRE_UIT();

View File

@ -18,6 +18,7 @@
#include "base/functional/callback.h" #include "base/functional/callback.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/task/sequenced_task_runner_helpers.h" #include "base/task/sequenced_task_runner_helpers.h"
#include "cef/libcef/features/features.h"
#include "chrome/common/plugin.mojom.h" #include "chrome/common/plugin.mojom.h"
#include "services/network/public/mojom/network_context.mojom.h" #include "services/network/public/mojom/network_context.mojom.h"
#include "ui/base/page_transition_types.h" #include "ui/base/page_transition_types.h"
@ -160,7 +161,8 @@ class CefBrowserContext {
const CefString& domain_name, const CefString& domain_name,
CefRefPtr<CefSchemeHandlerFactory> factory); CefRefPtr<CefSchemeHandlerFactory> factory);
void ClearSchemeHandlerFactories(); void ClearSchemeHandlerFactories();
// TODO(chrome-runtime): Make these extension methods pure virtual.
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
virtual void LoadExtension(const CefString& root_directory, virtual void LoadExtension(const CefString& root_directory,
CefRefPtr<CefDictionaryValue> manifest, CefRefPtr<CefDictionaryValue> manifest,
CefRefPtr<CefExtensionHandler> handler, CefRefPtr<CefExtensionHandler> handler,
@ -170,6 +172,7 @@ class CefBrowserContext {
// Called from CefExtensionImpl::Unload(). // Called from CefExtensionImpl::Unload().
virtual bool UnloadExtension(const CefString& extension_id); virtual bool UnloadExtension(const CefString& extension_id);
#endif
// Called from AlloyBrowserHostImpl::DidFinishNavigation to update the table // Called from AlloyBrowserHostImpl::DidFinishNavigation to update the table
// of visited links. // of visited links.

View File

@ -731,6 +731,15 @@ void CefBrowserHostBase::NotifyMoveOrResizeStarted() {
#endif #endif
} }
CefRefPtr<CefExtension> CefBrowserHostBase::GetExtension() {
NOTIMPLEMENTED();
return nullptr;
}
bool CefBrowserHostBase::IsBackgroundHost() {
return false;
}
bool CefBrowserHostBase::IsFullscreen() { bool CefBrowserHostBase::IsFullscreen() {
if (!CEF_CURRENTLY_ON_UIT()) { if (!CEF_CURRENTLY_ON_UIT()) {
DCHECK(false) << "called on invalid thread"; DCHECK(false) << "called on invalid thread";

View File

@ -22,7 +22,11 @@
#include "base/observer_list.h" #include "base/observer_list.h"
#include "base/synchronization/lock.h" #include "base/synchronization/lock.h"
#include "cef/libcef/features/features.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "extensions/common/mojom/view_type.mojom.h" #include "extensions/common/mojom/view_type.mojom.h"
#endif
namespace extensions { namespace extensions {
class Extension; class Extension;
@ -99,9 +103,11 @@ struct CefBrowserCreateParams {
// Browser settings. // Browser settings.
CefBrowserSettings settings; CefBrowserSettings settings;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Other browser that opened this DevTools browser. Will be nullptr for non- // Other browser that opened this DevTools browser. Will be nullptr for non-
// DevTools browsers. Currently used with the alloy runtime only. // DevTools browsers. Currently used with the alloy runtime only.
CefRefPtr<CefBrowserHostBase> devtools_opener; CefRefPtr<CefBrowserHostBase> devtools_opener;
#endif
// Request context to use when creating the browser. If nullptr the global // Request context to use when creating the browser. If nullptr the global
// request context will be used. // request context will be used.
@ -111,12 +117,14 @@ struct CefBrowserCreateParams {
// CefRenderProcessHandler::OnBrowserCreated. // CefRenderProcessHandler::OnBrowserCreated.
CefRefPtr<CefDictionaryValue> extra_info; CefRefPtr<CefDictionaryValue> extra_info;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Used when explicitly creating the browser as an extension host via // Used when explicitly creating the browser as an extension host via
// ProcessManager::CreateBackgroundHost. Currently used with the alloy // ProcessManager::CreateBackgroundHost. Currently used with the alloy
// runtime only. // runtime only.
const extensions::Extension* extension = nullptr; const extensions::Extension* extension = nullptr;
extensions::mojom::ViewType extension_host_type = extensions::mojom::ViewType extension_host_type =
extensions::mojom::ViewType::kInvalid; extensions::mojom::ViewType::kInvalid;
#endif
}; };
// Base class for CefBrowserHost implementations. Includes functionality that is // Base class for CefBrowserHost implementations. Includes functionality that is
@ -251,6 +259,8 @@ class CefBrowserHostBase : public CefBrowserHost,
bool current_only) override; bool current_only) override;
CefRefPtr<CefNavigationEntry> GetVisibleNavigationEntry() override; CefRefPtr<CefNavigationEntry> GetVisibleNavigationEntry() override;
void NotifyMoveOrResizeStarted() override; void NotifyMoveOrResizeStarted() override;
CefRefPtr<CefExtension> GetExtension() override;
bool IsBackgroundHost() override;
bool IsFullscreen() override; bool IsFullscreen() override;
void ExitFullscreen(bool will_cause_resize) override; void ExitFullscreen(bool will_cause_resize) override;
bool IsRenderProcessUnresponsive() override; bool IsRenderProcessUnresponsive() override;

View File

@ -154,9 +154,11 @@ CefRefPtr<CefBrowser> CefBrowserHost::CreateBrowserSync(
// static // static
bool CefBrowserCreateParams::IsChromeStyle(const CefWindowInfo* window_info) { bool CefBrowserCreateParams::IsChromeStyle(const CefWindowInfo* window_info) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (!cef::IsChromeRuntimeEnabled()) { if (!cef::IsChromeRuntimeEnabled()) {
return false; return false;
} }
#endif
if (!window_info) { if (!window_info) {
return true; return true;
} }
@ -167,9 +169,11 @@ bool CefBrowserCreateParams::IsChromeStyle(const CefWindowInfo* window_info) {
} }
bool CefBrowserCreateParams::IsChromeStyle() const { bool CefBrowserCreateParams::IsChromeStyle() const {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (!cef::IsChromeRuntimeEnabled()) { if (!cef::IsChromeRuntimeEnabled()) {
return false; return false;
} }
#endif
const bool chrome_style_via_window_info = IsChromeStyle(window_info.get()); const bool chrome_style_via_window_info = IsChromeStyle(window_info.get());
@ -206,7 +210,11 @@ void CefBrowserCreateParams::InitWindowInfo(CefWindowInfo* window_info,
window_info->SetAsPopup(nullptr, CefString()); window_info->SetAsPopup(nullptr, CefString());
#endif #endif
if (cef::IsChromeRuntimeEnabled() && opener->IsAlloyStyle()) { if (
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
cef::IsChromeRuntimeEnabled() &&
#endif
opener->IsAlloyStyle()) {
// Give the popup the same runtime style as the opener. // Give the popup the same runtime style as the opener.
window_info->runtime_style = CEF_RUNTIME_STYLE_ALLOY; window_info->runtime_style = CEF_RUNTIME_STYLE_ALLOY;
} }
@ -216,10 +224,12 @@ void CefBrowserCreateParams::MaybeSetWindowInfo(
const CefWindowInfo& new_window_info, const CefWindowInfo& new_window_info,
bool allow_alloy_style, bool allow_alloy_style,
bool allow_chrome_style) { bool allow_chrome_style) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (!cef::IsChromeRuntimeEnabled()) { if (!cef::IsChromeRuntimeEnabled()) {
// Chrome style is not supported wih the Alloy bootstrap. // Chrome style is not supported wih the Alloy bootstrap.
allow_chrome_style = false; allow_chrome_style = false;
} }
#endif
if (allow_chrome_style && new_window_info.windowless_rendering_enabled) { if (allow_chrome_style && new_window_info.windowless_rendering_enabled) {
// Chrome style is not supported with windowles rendering. // Chrome style is not supported with windowles rendering.
@ -253,7 +263,11 @@ void CefBrowserCreateParams::MaybeSetWindowInfo(
if (!is_chrome_style || if (!is_chrome_style ||
chrome_child_window::HasParentHandle(new_window_info)) { chrome_child_window::HasParentHandle(new_window_info)) {
window_info = std::make_unique<CefWindowInfo>(new_window_info); window_info = std::make_unique<CefWindowInfo>(new_window_info);
if (cef::IsChromeRuntimeEnabled() && !allow_chrome_style) { if (
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
cef::IsChromeRuntimeEnabled() &&
#endif
!allow_chrome_style) {
// Only Alloy style is allowed. // Only Alloy style is allowed.
window_info->runtime_style = CEF_RUNTIME_STYLE_ALLOY; window_info->runtime_style = CEF_RUNTIME_STYLE_ALLOY;
} else if (reset_style) { } else if (reset_style) {

View File

@ -280,7 +280,9 @@ void CefBrowserInfoManager::WebContentsCreated(
bool CefBrowserInfoManager::AddWebContents(content::WebContents* new_contents) { bool CefBrowserInfoManager::AddWebContents(content::WebContents* new_contents) {
CEF_REQUIRE_UIT(); CEF_REQUIRE_UIT();
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
DCHECK(cef::IsChromeRuntimeEnabled()); DCHECK(cef::IsChromeRuntimeEnabled());
#endif
// Pending popup information may be missing in cases where // Pending popup information may be missing in cases where
// chrome::AddWebContents is called directly from the Chrome UI (profile // chrome::AddWebContents is called directly from the Chrome UI (profile

View File

@ -118,11 +118,13 @@ void CefBrowserPlatformDelegate::WebContentsDestroyed(
web_contents_ = nullptr; web_contents_ = nullptr;
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool CefBrowserPlatformDelegate:: bool CefBrowserPlatformDelegate::
ShouldAllowRendererInitiatedCrossProcessNavigation( ShouldAllowRendererInitiatedCrossProcessNavigation(
bool is_main_frame_navigation) { bool is_main_frame_navigation) {
return true; return true;
} }
#endif
void CefBrowserPlatformDelegate::RenderViewCreated( void CefBrowserPlatformDelegate::RenderViewCreated(
content::RenderViewHost* render_view_host) { content::RenderViewHost* render_view_host) {
@ -144,6 +146,7 @@ void CefBrowserPlatformDelegate::BrowserCreated(CefBrowserHostBase* browser) {
browser_ = browser; browser_ = browser;
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void CefBrowserPlatformDelegate::CreateExtensionHost( void CefBrowserPlatformDelegate::CreateExtensionHost(
const extensions::Extension* extension, const extensions::Extension* extension,
const GURL& url, const GURL& url,
@ -156,6 +159,7 @@ extensions::ExtensionHost* CefBrowserPlatformDelegate::GetExtensionHost()
DCHECK(false); DCHECK(false);
return nullptr; return nullptr;
} }
#endif
void CefBrowserPlatformDelegate::NotifyBrowserCreated() {} void CefBrowserPlatformDelegate::NotifyBrowserCreated() {}
@ -347,6 +351,7 @@ bool CefBrowserPlatformDelegate::HandleKeyboardEvent(
return false; return false;
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool CefBrowserPlatformDelegate::PreHandleGestureEvent( bool CefBrowserPlatformDelegate::PreHandleGestureEvent(
content::WebContents* source, content::WebContents* source,
const blink::WebGestureEvent& event) { const blink::WebGestureEvent& event) {
@ -357,6 +362,7 @@ bool CefBrowserPlatformDelegate::IsNeverComposited(
content::WebContents* web_contents) { content::WebContents* web_contents) {
return false; return false;
} }
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// static // static
void CefBrowserPlatformDelegate::HandleExternalProtocol(const GURL& url) { void CefBrowserPlatformDelegate::HandleExternalProtocol(const GURL& url) {

View File

@ -15,13 +15,17 @@
#include "include/views/cef_browser_view.h" #include "include/views/cef_browser_view.h"
#include "base/functional/callback_forward.h" #include "base/functional/callback_forward.h"
#include "extensions/common/mojom/view_type.mojom-forward.h" #include "cef/libcef/features/features.h"
#include "third_party/blink/public/common/page/drag_operation.h" #include "third_party/blink/public/common/page/drag_operation.h"
#include "third_party/blink/public/mojom/drag/drag.mojom-forward.h" #include "third_party/blink/public/mojom/drag/drag.mojom-forward.h"
#include "third_party/skia/include/core/SkColor.h" #include "third_party/skia/include/core/SkColor.h"
#include "ui/base/dragdrop/mojom/drag_drop_types.mojom-forward.h" #include "ui/base/dragdrop/mojom/drag_drop_types.mojom-forward.h"
#include "ui/base/window_open_disposition.h" #include "ui/base/window_open_disposition.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "extensions/common/mojom/view_type.mojom-forward.h"
#endif
class GURL; class GURL;
namespace blink { namespace blink {
@ -48,10 +52,12 @@ class WebContents;
class WebContentsView; class WebContentsView;
} // namespace content } // namespace content
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
namespace extensions { namespace extensions {
class Extension; class Extension;
class ExtensionHost; class ExtensionHost;
} // namespace extensions } // namespace extensions
#endif
namespace gfx { namespace gfx {
class ImageSkia; class ImageSkia;
@ -126,9 +132,11 @@ class CefBrowserPlatformDelegate {
// BrowserDestroyed(). Will only be called a single time per instance. // BrowserDestroyed(). Will only be called a single time per instance.
virtual void WebContentsDestroyed(content::WebContents* web_contents); virtual void WebContentsDestroyed(content::WebContents* web_contents);
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// See WebContentsDelegate documentation. // See WebContentsDelegate documentation.
virtual bool ShouldAllowRendererInitiatedCrossProcessNavigation( virtual bool ShouldAllowRendererInitiatedCrossProcessNavigation(
bool is_main_frame_navigation); bool is_main_frame_navigation);
#endif
// Called after the RenderViewHost is created. // Called after the RenderViewHost is created.
virtual void RenderViewCreated(content::RenderViewHost* render_view_host); virtual void RenderViewCreated(content::RenderViewHost* render_view_host);
@ -141,6 +149,7 @@ class CefBrowserPlatformDelegate {
// from this method. // from this method.
virtual void BrowserCreated(CefBrowserHostBase* browser); virtual void BrowserCreated(CefBrowserHostBase* browser);
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Called from BrowserHost::Create. // Called from BrowserHost::Create.
virtual void CreateExtensionHost(const extensions::Extension* extension, virtual void CreateExtensionHost(const extensions::Extension* extension,
const GURL& url, const GURL& url,
@ -148,6 +157,7 @@ class CefBrowserPlatformDelegate {
// Returns the current extension host. // Returns the current extension host.
virtual extensions::ExtensionHost* GetExtensionHost() const; virtual extensions::ExtensionHost* GetExtensionHost() const;
#endif
// Send any notifications related to browser creation. Called after // Send any notifications related to browser creation. Called after
// BrowserCreated(). // BrowserCreated().
@ -278,12 +288,14 @@ class CefBrowserPlatformDelegate {
virtual bool HandleKeyboardEvent( virtual bool HandleKeyboardEvent(
const content::NativeWebKeyboardEvent& event); const content::NativeWebKeyboardEvent& event);
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// See WebContentsDelegate documentation. // See WebContentsDelegate documentation.
virtual bool PreHandleGestureEvent(content::WebContents* source, virtual bool PreHandleGestureEvent(content::WebContents* source,
const blink::WebGestureEvent& event); const blink::WebGestureEvent& event);
// See WebContentsDelegate documentation. // See WebContentsDelegate documentation.
virtual bool IsNeverComposited(content::WebContents* web_contents); virtual bool IsNeverComposited(content::WebContents* web_contents);
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Invoke platform specific handling for the external protocol. // Invoke platform specific handling for the external protocol.
static void HandleExternalProtocol(const GURL& url); static void HandleExternalProtocol(const GURL& url);

View File

@ -16,7 +16,6 @@
#include "libcef/browser/chrome/views/browser_platform_delegate_chrome_child_window.h" #include "libcef/browser/chrome/views/browser_platform_delegate_chrome_child_window.h"
#include "libcef/browser/chrome/views/browser_platform_delegate_chrome_views.h" #include "libcef/browser/chrome/views/browser_platform_delegate_chrome_views.h"
#include "libcef/browser/chrome/views/chrome_child_window.h" #include "libcef/browser/chrome/views/chrome_child_window.h"
#include "libcef/browser/extensions/browser_platform_delegate_background.h"
#include "libcef/browser/views/browser_platform_delegate_views.h" #include "libcef/browser/views/browser_platform_delegate_views.h"
#if BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_WIN)
@ -32,6 +31,10 @@
#error A delegate implementation is not available for your platform. #error A delegate implementation is not available for your platform.
#endif #endif
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "libcef/browser/extensions/browser_platform_delegate_background.h"
#endif
namespace { namespace {
std::unique_ptr<CefBrowserPlatformDelegateNative> CreateNativeDelegate( std::unique_ptr<CefBrowserPlatformDelegateNative> CreateNativeDelegate(
@ -109,6 +112,7 @@ std::unique_ptr<CefBrowserPlatformDelegate> CefBrowserPlatformDelegate::Create(
return std::make_unique<CefBrowserPlatformDelegateViews>( return std::make_unique<CefBrowserPlatformDelegateViews>(
std::move(native_delegate), std::move(native_delegate),
static_cast<CefBrowserViewImpl*>(create_params.browser_view.get())); static_cast<CefBrowserViewImpl*>(create_params.browser_view.get()));
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
} else if (create_params.extension_host_type == } else if (create_params.extension_host_type ==
extensions::mojom::ViewType::kExtensionBackgroundPage) { extensions::mojom::ViewType::kExtensionBackgroundPage) {
// Creating a background extension host without a window. // Creating a background extension host without a window.
@ -116,6 +120,7 @@ std::unique_ptr<CefBrowserPlatformDelegate> CefBrowserPlatformDelegate::Create(
CreateNativeDelegate(CefWindowInfo(), background_color); CreateNativeDelegate(CefWindowInfo(), background_color);
return std::make_unique<CefBrowserPlatformDelegateBackground>( return std::make_unique<CefBrowserPlatformDelegateBackground>(
std::move(native_delegate)); std::move(native_delegate));
#endif
} else if (create_params.window_info) { } else if (create_params.window_info) {
std::unique_ptr<CefBrowserPlatformDelegateNative> native_delegate = std::unique_ptr<CefBrowserPlatformDelegateNative> native_delegate =
CreateNativeDelegate(*create_params.window_info, background_color); CreateNativeDelegate(*create_params.window_info, background_color);

View File

@ -780,9 +780,11 @@ std::unique_ptr<BrowserDelegate> BrowserDelegate::Create(
Browser* browser, Browser* browser,
scoped_refptr<CreateParams> cef_params, scoped_refptr<CreateParams> cef_params,
const Browser* opener) { const Browser* opener) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (!cef::IsChromeRuntimeEnabled()) { if (!cef::IsChromeRuntimeEnabled()) {
return nullptr; return nullptr;
} }
#endif
CefBrowserCreateParams create_params; CefBrowserCreateParams create_params;

View File

@ -68,35 +68,45 @@ CefRefPtr<ChromeBrowserHostImpl> ChromeBrowserHostImpl::FromBaseChecked(
// static // static
CefRefPtr<ChromeBrowserHostImpl> ChromeBrowserHostImpl::GetBrowserForHost( CefRefPtr<ChromeBrowserHostImpl> ChromeBrowserHostImpl::GetBrowserForHost(
const content::RenderViewHost* host) { const content::RenderViewHost* host) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
REQUIRE_CHROME_RUNTIME(); REQUIRE_CHROME_RUNTIME();
#endif
return FromBaseChecked(CefBrowserHostBase::GetBrowserForHost(host)); return FromBaseChecked(CefBrowserHostBase::GetBrowserForHost(host));
} }
// static // static
CefRefPtr<ChromeBrowserHostImpl> ChromeBrowserHostImpl::GetBrowserForHost( CefRefPtr<ChromeBrowserHostImpl> ChromeBrowserHostImpl::GetBrowserForHost(
const content::RenderFrameHost* host) { const content::RenderFrameHost* host) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
REQUIRE_CHROME_RUNTIME(); REQUIRE_CHROME_RUNTIME();
#endif
return FromBaseChecked(CefBrowserHostBase::GetBrowserForHost(host)); return FromBaseChecked(CefBrowserHostBase::GetBrowserForHost(host));
} }
// static // static
CefRefPtr<ChromeBrowserHostImpl> ChromeBrowserHostImpl::GetBrowserForContents( CefRefPtr<ChromeBrowserHostImpl> ChromeBrowserHostImpl::GetBrowserForContents(
const content::WebContents* contents) { const content::WebContents* contents) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
REQUIRE_CHROME_RUNTIME(); REQUIRE_CHROME_RUNTIME();
#endif
return FromBaseChecked(CefBrowserHostBase::GetBrowserForContents(contents)); return FromBaseChecked(CefBrowserHostBase::GetBrowserForContents(contents));
} }
// static // static
CefRefPtr<ChromeBrowserHostImpl> ChromeBrowserHostImpl::GetBrowserForGlobalId( CefRefPtr<ChromeBrowserHostImpl> ChromeBrowserHostImpl::GetBrowserForGlobalId(
const content::GlobalRenderFrameHostId& global_id) { const content::GlobalRenderFrameHostId& global_id) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
REQUIRE_CHROME_RUNTIME(); REQUIRE_CHROME_RUNTIME();
#endif
return FromBaseChecked(CefBrowserHostBase::GetBrowserForGlobalId(global_id)); return FromBaseChecked(CefBrowserHostBase::GetBrowserForGlobalId(global_id));
} }
// static // static
CefRefPtr<ChromeBrowserHostImpl> ChromeBrowserHostImpl::GetBrowserForBrowser( CefRefPtr<ChromeBrowserHostImpl> ChromeBrowserHostImpl::GetBrowserForBrowser(
const Browser* browser) { const Browser* browser) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
REQUIRE_CHROME_RUNTIME(); REQUIRE_CHROME_RUNTIME();
#endif
// Return the ChromeBrowserHostImpl that is currently active. // Return the ChromeBrowserHostImpl that is currently active.
// Views-hosted Browsers will contain a single ChromeBrowserHostImpl. // Views-hosted Browsers will contain a single ChromeBrowserHostImpl.
// Otherwise, there will be a ChromeBrowserHostImpl per Tab/WebContents. // Otherwise, there will be a ChromeBrowserHostImpl per Tab/WebContents.
@ -317,14 +327,6 @@ void ChromeBrowserHostImpl::SetAutoResizeEnabled(bool enabled,
NOTIMPLEMENTED(); NOTIMPLEMENTED();
} }
CefRefPtr<CefExtension> ChromeBrowserHostImpl::GetExtension() {
return nullptr;
}
bool ChromeBrowserHostImpl::IsBackgroundHost() {
return false;
}
bool ChromeBrowserHostImpl::CanExecuteChromeCommand(int command_id) { bool ChromeBrowserHostImpl::CanExecuteChromeCommand(int command_id) {
// Verify that this method is being called on the UI thread. // Verify that this method is being called on the UI thread.
if (!CEF_CURRENTLY_ON_UIT()) { if (!CEF_CURRENTLY_ON_UIT()) {

View File

@ -114,8 +114,6 @@ class ChromeBrowserHostImpl : public CefBrowserHostBase {
void SetAutoResizeEnabled(bool enabled, void SetAutoResizeEnabled(bool enabled,
const CefSize& min_size, const CefSize& min_size,
const CefSize& max_size) override; const CefSize& max_size) override;
CefRefPtr<CefExtension> GetExtension() override;
bool IsBackgroundHost() override;
bool CanExecuteChromeCommand(int command_id) override; bool CanExecuteChromeCommand(int command_id) override;
void ExecuteChromeCommand(int command_id, void ExecuteChromeCommand(int command_id,
cef_window_open_disposition_t disposition) override; cef_window_open_disposition_t disposition) override;

View File

@ -28,6 +28,7 @@
#include "base/command_line.h" #include "base/command_line.h"
#include "base/path_service.h" #include "base/path_service.h"
#include "cef/libcef/features/features.h"
#include "chrome/browser/chrome_browser_main.h" #include "chrome/browser/chrome_browser_main.h"
#include "chrome/browser/net/system_network_context_manager.h" #include "chrome/browser/net/system_network_context_manager.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
@ -102,8 +103,10 @@ void ChromeContentBrowserClientCef::AppendExtraCommandLineSwitches(
ChromeContentBrowserClient::AppendExtraCommandLineSwitches(command_line, ChromeContentBrowserClient::AppendExtraCommandLineSwitches(command_line,
child_process_id); child_process_id);
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Necessary to launch sub-processes in the correct mode. // Necessary to launch sub-processes in the correct mode.
command_line->AppendSwitch(switches::kEnableChromeRuntime); command_line->AppendSwitch(switches::kEnableChromeRuntime);
#endif
// Necessary to populate DIR_USER_DATA in sub-processes. // Necessary to populate DIR_USER_DATA in sub-processes.
// See resource_util.cc GetUserDataPath. // See resource_util.cc GetUserDataPath.

View File

@ -4,14 +4,19 @@
#include "libcef/browser/devtools/devtools_window_runner.h" #include "libcef/browser/devtools/devtools_window_runner.h"
#include "libcef/browser/alloy/devtools/alloy_devtools_window_runner.h"
#include "libcef/browser/chrome/chrome_devtools_window_runner.h" #include "libcef/browser/chrome/chrome_devtools_window_runner.h"
#include "libcef/features/runtime.h" #include "libcef/features/runtime.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "libcef/browser/alloy/devtools/alloy_devtools_window_runner.h"
#endif
// static // static
std::unique_ptr<CefDevToolsWindowRunner> CefDevToolsWindowRunner::Create() { std::unique_ptr<CefDevToolsWindowRunner> CefDevToolsWindowRunner::Create() {
if (cef::IsChromeRuntimeEnabled()) { #if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
return std::make_unique<ChromeDevToolsWindowRunner>(); if (cef::IsAlloyRuntimeEnabled()) {
}
return std::make_unique<AlloyDevToolsWindowRunner>(); return std::make_unique<AlloyDevToolsWindowRunner>();
} }
#endif
return std::make_unique<ChromeDevToolsWindowRunner>();
}

View File

@ -12,7 +12,9 @@ namespace cef {
// static // static
std::unique_ptr<cef::DownloadManagerDelegate> DownloadManagerDelegate::Create( std::unique_ptr<cef::DownloadManagerDelegate> DownloadManagerDelegate::Create(
content::DownloadManager* download_manager) { content::DownloadManager* download_manager) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
REQUIRE_CHROME_RUNTIME(); REQUIRE_CHROME_RUNTIME();
#endif
return std::make_unique<CefDownloadManagerDelegateImpl>( return std::make_unique<CefDownloadManagerDelegateImpl>(
download_manager, /*alloy_bootstrap=*/false); download_manager, /*alloy_bootstrap=*/false);
} }

View File

@ -4,20 +4,10 @@
#include "libcef/browser/extensions/browser_extensions_util.h" #include "libcef/browser/extensions/browser_extensions_util.h"
#include "libcef/browser/alloy/alloy_browser_host_impl.h"
#include "libcef/browser/browser_context.h"
#include "libcef/browser/browser_info_manager.h"
#include "libcef/browser/thread_util.h"
#include "libcef/common/extensions/extensions_util.h"
#include "libcef/features/runtime_checks.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/printing/print_preview_dialog_controller.h" #include "chrome/browser/printing/print_preview_dialog_controller.h"
#include "content/browser/browser_plugin/browser_plugin_guest.h" #include "content/browser/browser_plugin/browser_plugin_guest.h"
#include "content/browser/web_contents/web_contents_impl.h" #include "content/browser/web_contents/web_contents_impl.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_plugin_guest_manager.h"
#include "extensions/browser/extension_registry.h"
namespace extensions { namespace extensions {
@ -73,48 +63,4 @@ bool IsPrintPreviewDialog(const content::WebContents* web_contents) {
return !!GetInitiatorForPrintPreviewDialog(web_contents); return !!GetInitiatorForPrintPreviewDialog(web_contents);
} }
CefRefPtr<AlloyBrowserHostImpl> GetBrowserForTabId(
int tab_id,
content::BrowserContext* browser_context) {
REQUIRE_ALLOY_RUNTIME();
CEF_REQUIRE_UIT();
DCHECK(browser_context);
if (tab_id < 0 || !browser_context) {
return nullptr;
}
auto cef_browser_context =
CefBrowserContext::FromBrowserContext(browser_context);
for (const auto& browser_info :
CefBrowserInfoManager::GetInstance()->GetBrowserInfoList()) {
auto current_browser =
AlloyBrowserHostImpl::FromBaseChecked(browser_info->browser());
if (current_browser && current_browser->GetIdentifier() == tab_id) {
// Make sure we're operating in the same CefBrowserContext.
if (CefBrowserContext::FromBrowserContext(
current_browser->GetBrowserContext()) == cef_browser_context) {
return current_browser;
} else {
LOG(WARNING) << "Browser with tabId " << tab_id
<< " cannot be accessed because is uses a different "
"CefRequestContext";
break;
}
}
}
return nullptr;
}
const Extension* GetExtensionForUrl(content::BrowserContext* browser_context,
const GURL& url) {
ExtensionRegistry* registry = ExtensionRegistry::Get(browser_context);
if (!registry) {
return nullptr;
}
std::string extension_id = url.host();
return registry->enabled_extensions().GetByID(extension_id);
}
} // namespace extensions } // namespace extensions

View File

@ -5,23 +5,12 @@
#ifndef CEF_LIBCEF_BROWSER_EXTENSIONS_BROWSER_EXTENSIONS_UTIL_H_ #ifndef CEF_LIBCEF_BROWSER_EXTENSIONS_BROWSER_EXTENSIONS_UTIL_H_
#define CEF_LIBCEF_BROWSER_EXTENSIONS_BROWSER_EXTENSIONS_UTIL_H_ #define CEF_LIBCEF_BROWSER_EXTENSIONS_BROWSER_EXTENSIONS_UTIL_H_
#include <vector>
#include "include/internal/cef_ptr.h"
#include "url/gurl.h"
namespace content { namespace content {
class BrowserContext;
class WebContents; class WebContents;
} // namespace content } // namespace content
class AlloyBrowserHostImpl;
namespace extensions { namespace extensions {
class Extension;
// Returns the WebContents that owns the specified |guest|, if any. // Returns the WebContents that owns the specified |guest|, if any.
content::WebContents* GetOwnerForGuestContents( content::WebContents* GetOwnerForGuestContents(
const content::WebContents* guest); const content::WebContents* guest);
@ -30,18 +19,6 @@ content::WebContents* GetOwnerForGuestContents(
bool IsBrowserPluginGuest(const content::WebContents* web_contents); bool IsBrowserPluginGuest(const content::WebContents* web_contents);
bool IsPrintPreviewDialog(const content::WebContents* web_contents); bool IsPrintPreviewDialog(const content::WebContents* web_contents);
// Returns the browser matching |tab_id| and |browser_context|. Returns false if
// |tab_id| is < 0 or a matching browser cannot be found within
// |browser_context|. Similar in concept to ExtensionTabUtil::GetTabById.
CefRefPtr<AlloyBrowserHostImpl> GetBrowserForTabId(
int tab_id,
content::BrowserContext* browser_context);
// Returns the extension associated with |url| in |profile|. Returns nullptr
// if the extension does not exist.
const Extension* GetExtensionForUrl(content::BrowserContext* browser_context,
const GURL& url);
} // namespace extensions } // namespace extensions
#endif // CEF_LIBCEF_BROWSER_EXTENSIONS_BROWSER_EXTENSIONS_UTIL_H_ #endif // CEF_LIBCEF_BROWSER_EXTENSIONS_BROWSER_EXTENSIONS_UTIL_H_

View File

@ -6,7 +6,9 @@
#include <memory> #include <memory>
#include "libcef/browser/alloy/alloy_browser_host_impl.h"
#include "libcef/browser/browser_context.h" #include "libcef/browser/browser_context.h"
#include "libcef/browser/browser_info_manager.h"
#include "libcef/browser/extensions/browser_extensions_util.h" #include "libcef/browser/extensions/browser_extensions_util.h"
#include "libcef/browser/extensions/extension_system.h" #include "libcef/browser/extensions/extension_system.h"
#include "libcef/browser/thread_util.h" #include "libcef/browser/thread_util.h"
@ -135,6 +137,39 @@ class CefGetExtensionLoadFileCallbackImpl
IMPLEMENT_REFCOUNTING(CefGetExtensionLoadFileCallbackImpl); IMPLEMENT_REFCOUNTING(CefGetExtensionLoadFileCallbackImpl);
}; };
CefRefPtr<AlloyBrowserHostImpl> GetBrowserForTabId(
int tab_id,
content::BrowserContext* browser_context) {
CEF_REQUIRE_UIT();
DCHECK(browser_context);
if (tab_id < 0 || !browser_context) {
return nullptr;
}
auto cef_browser_context =
CefBrowserContext::FromBrowserContext(browser_context);
for (const auto& browser_info :
CefBrowserInfoManager::GetInstance()->GetBrowserInfoList()) {
auto current_browser =
AlloyBrowserHostImpl::FromBaseChecked(browser_info->browser());
if (current_browser && current_browser->GetIdentifier() == tab_id) {
// Make sure we're operating in the same CefBrowserContext.
if (CefBrowserContext::FromBrowserContext(
current_browser->GetBrowserContext()) == cef_browser_context) {
return current_browser;
} else {
LOG(WARNING) << "Browser with tabId " << tab_id
<< " cannot be accessed because is uses a different "
"CefRequestContext";
break;
}
}
}
return nullptr;
}
} // namespace } // namespace
CefExtensionFunctionDetails::CefExtensionFunctionDetails( CefExtensionFunctionDetails::CefExtensionFunctionDetails(

View File

@ -4,7 +4,6 @@
#include "libcef/browser/iothread_state.h" #include "libcef/browser/iothread_state.h"
#include "libcef/browser/net/scheme_handler.h"
#include "libcef/browser/thread_util.h" #include "libcef/browser/thread_util.h"
#include "libcef/common/net/scheme_registration.h" #include "libcef/common/net/scheme_registration.h"
@ -15,13 +14,20 @@
#include "content/browser/resource_context_impl.h" #include "content/browser/resource_context_impl.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/browser/global_routing_id.h" #include "content/public/browser/global_routing_id.h"
#include "url/gurl.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "libcef/browser/net/scheme_handler.h"
#endif
CefIOThreadState::CefIOThreadState() { CefIOThreadState::CefIOThreadState() {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Using base::Unretained() is safe because both this callback and possible // Using base::Unretained() is safe because both this callback and possible
// deletion of |this| will execute on the IO thread, and this callback will // deletion of |this| will execute on the IO thread, and this callback will
// be executed first. // be executed first.
CEF_POST_TASK(CEF_IOT, base::BindOnce(&CefIOThreadState::InitOnIOThread, CEF_POST_TASK(CEF_IOT, base::BindOnce(&CefIOThreadState::InitOnIOThread,
base::Unretained(this))); base::Unretained(this)));
#endif
} }
CefIOThreadState::~CefIOThreadState() { CefIOThreadState::~CefIOThreadState() {
@ -83,8 +89,10 @@ void CefIOThreadState::ClearSchemeHandlerFactories() {
scheme_handler_factory_map_.clear(); scheme_handler_factory_map_.clear();
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Restore the default internal handlers. // Restore the default internal handlers.
scheme::RegisterInternalHandlers(this); scheme::RegisterInternalHandlers(this);
#endif
} }
CefRefPtr<CefSchemeHandlerFactory> CefIOThreadState::GetSchemeHandlerFactory( CefRefPtr<CefSchemeHandlerFactory> CefIOThreadState::GetSchemeHandlerFactory(
@ -121,9 +129,11 @@ CefRefPtr<CefSchemeHandlerFactory> CefIOThreadState::GetSchemeHandlerFactory(
return nullptr; return nullptr;
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void CefIOThreadState::InitOnIOThread() { void CefIOThreadState::InitOnIOThread() {
CEF_REQUIRE_IOT(); CEF_REQUIRE_IOT();
// Add the default internal handlers. // Add the default internal handlers.
scheme::RegisterInternalHandlers(this); scheme::RegisterInternalHandlers(this);
} }
#endif

View File

@ -9,9 +9,9 @@
#include "include/cef_request_context.h" #include "include/cef_request_context.h"
#include "include/cef_request_context_handler.h" #include "include/cef_request_context_handler.h"
#include "include/cef_scheme.h" #include "include/cef_scheme.h"
#include "libcef/browser/request_context_handler_map.h" #include "libcef/browser/request_context_handler_map.h"
#include "cef/libcef/features/features.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
namespace content { namespace content {
@ -54,7 +54,9 @@ class CefIOThreadState : public base::RefCountedThreadSafe<
~CefIOThreadState(); ~CefIOThreadState();
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void InitOnIOThread(); void InitOnIOThread();
#endif
// Map IDs to CefRequestContextHandler objects. // Map IDs to CefRequestContextHandler objects.
CefRequestContextHandlerMap handler_map_; CefRequestContextHandlerMap handler_map_;

View File

@ -7,7 +7,6 @@
#include "libcef/browser/browser_message_loop.h" #include "libcef/browser/browser_message_loop.h"
#include "libcef/browser/thread_util.h" #include "libcef/browser/thread_util.h"
#include "libcef/common/alloy/alloy_main_runner_delegate.h"
#include "libcef/common/cef_switches.h" #include "libcef/common/cef_switches.h"
#include "libcef/common/chrome/chrome_main_runner_delegate.h" #include "libcef/common/chrome/chrome_main_runner_delegate.h"
#include "libcef/features/runtime.h" #include "libcef/features/runtime.h"
@ -47,30 +46,40 @@
#include "sandbox/win/src/sandbox_types.h" #include "sandbox/win/src/sandbox_types.h"
#endif #endif
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "libcef/common/alloy/alloy_main_runner_delegate.h"
#endif
namespace { namespace {
enum class RuntimeType { enum class RuntimeType {
UNINITIALIZED, UNINITIALIZED,
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
ALLOY, ALLOY,
#endif
CHROME, CHROME,
}; };
RuntimeType g_runtime_type = RuntimeType::UNINITIALIZED; RuntimeType g_runtime_type = RuntimeType::UNINITIALIZED;
std::unique_ptr<CefMainRunnerDelegate> MakeDelegate( std::unique_ptr<CefMainRunnerDelegate> MakeDelegate(
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
RuntimeType type, RuntimeType type,
#endif
CefMainRunnerHandler* runner, CefMainRunnerHandler* runner,
CefSettings* settings, CefSettings* settings,
CefRefPtr<CefApp> application) { CefRefPtr<CefApp> application) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (type == RuntimeType::ALLOY) { if (type == RuntimeType::ALLOY) {
g_runtime_type = RuntimeType::ALLOY; g_runtime_type = RuntimeType::ALLOY;
return std::make_unique<AlloyMainRunnerDelegate>(runner, settings, return std::make_unique<AlloyMainRunnerDelegate>(runner, settings,
application); application);
} else { }
#endif
g_runtime_type = RuntimeType::CHROME; g_runtime_type = RuntimeType::CHROME;
return std::make_unique<ChromeMainRunnerDelegate>(runner, settings, return std::make_unique<ChromeMainRunnerDelegate>(runner, settings,
application); application);
} }
}
// Based on components/crash/core/app/run_as_crashpad_handler_win.cc // Based on components/crash/core/app/run_as_crashpad_handler_win.cc
// Remove the "--type=crashpad-handler" command-line flag that will otherwise // Remove the "--type=crashpad-handler" command-line flag that will otherwise
@ -258,10 +267,18 @@ bool CefMainRunner::Initialize(CefSettings* settings,
void* windows_sandbox_info, void* windows_sandbox_info,
bool* initialized, bool* initialized,
base::OnceClosure context_initialized) { base::OnceClosure context_initialized) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
LOG_IF(WARNING, !settings->chrome_runtime)
<< "Alloy bootstrap is deprecated and will be removed in ~M127. See "
"https://github.com/chromiumembedded/cef/issues/3685";
#endif
DCHECK(!main_delegate_); DCHECK(!main_delegate_);
main_delegate_ = MakeDelegate( main_delegate_ = MakeDelegate(
settings->chrome_runtime ? RuntimeType::CHROME : RuntimeType::ALLOY, this, #if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
settings, application); settings->chrome_runtime ? RuntimeType::CHROME : RuntimeType::ALLOY,
#endif
this, settings, application);
exit_code_ = exit_code_ =
ContentMainInitialize(args, windows_sandbox_info, &settings->no_sandbox); ContentMainInitialize(args, windows_sandbox_info, &settings->no_sandbox);
@ -373,11 +390,13 @@ int CefMainRunner::RunAsHelperProcess(const CefMainArgs& args,
return -1; return -1;
} }
auto runtime_type = command_line.HasSwitch(switches::kEnableChromeRuntime) auto main_delegate = MakeDelegate(
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
command_line.HasSwitch(switches::kEnableChromeRuntime)
? RuntimeType::CHROME ? RuntimeType::CHROME
: RuntimeType::ALLOY; : RuntimeType::ALLOY,
auto main_delegate = MakeDelegate(runtime_type, /*runner=*/nullptr, #endif
/*settings=*/nullptr, application); /*runner=*/nullptr, /*settings=*/nullptr, application);
main_delegate->BeforeExecuteProcess(args); main_delegate->BeforeExecuteProcess(args);
int result; int result;
@ -584,9 +603,11 @@ void CefMainRunner::FinishShutdownOnUIThread() {
// From libcef/features/runtime.h: // From libcef/features/runtime.h:
namespace cef { namespace cef {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool IsAlloyRuntimeEnabled() { bool IsAlloyRuntimeEnabled() {
return g_runtime_type == RuntimeType::ALLOY; return g_runtime_type == RuntimeType::ALLOY;
} }
#endif
bool IsChromeRuntimeEnabled() { bool IsChromeRuntimeEnabled() {
return g_runtime_type == RuntimeType::CHROME; return g_runtime_type == RuntimeType::CHROME;

View File

@ -6,18 +6,89 @@
#include "include/cef_permission_handler.h" #include "include/cef_permission_handler.h"
#include "libcef/browser/browser_host_base.h" #include "libcef/browser/browser_host_base.h"
#include "libcef/browser/media_capture_devices_dispatcher.h"
#include "libcef/browser/media_stream_registrar.h" #include "libcef/browser/media_stream_registrar.h"
#include "libcef/browser/thread_util.h"
#include "libcef/common/cef_switches.h" #include "libcef/common/cef_switches.h"
#include "libcef/features/runtime.h"
#include "base/command_line.h" #include "base/command_line.h"
#include "base/functional/callback_helpers.h" #include "base/functional/callback_helpers.h"
#include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
#include "third_party/blink/public/mojom/mediastream/media_stream.mojom.h" #include "third_party/blink/public/mojom/mediastream/media_stream.mojom.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "libcef/browser/media_capture_devices_dispatcher.h"
#endif
namespace media_access_query { namespace media_access_query {
namespace { namespace {
const blink::MediaStreamDevice* FindDefaultDeviceWithId(
const blink::MediaStreamDevices& devices,
const std::string& device_id) {
if (devices.empty()) {
return nullptr;
}
blink::MediaStreamDevices::const_iterator iter = devices.begin();
for (; iter != devices.end(); ++iter) {
if (iter->id == device_id) {
return &(*iter);
}
}
return &(*devices.begin());
}
void GetRequestedDeviceChrome(const std::string& requested_device_id,
bool audio,
bool video,
blink::MediaStreamDevices* devices) {
CEF_REQUIRE_UIT();
DCHECK(audio || video);
auto* dispatcher = MediaCaptureDevicesDispatcher::GetInstance();
if (audio) {
const blink::MediaStreamDevices& audio_devices =
dispatcher->GetAudioCaptureDevices();
const blink::MediaStreamDevice* const device =
FindDefaultDeviceWithId(audio_devices, requested_device_id);
if (device) {
devices->push_back(*device);
}
}
if (video) {
const blink::MediaStreamDevices& video_devices =
dispatcher->GetVideoCaptureDevices();
const blink::MediaStreamDevice* const device =
FindDefaultDeviceWithId(video_devices, requested_device_id);
if (device) {
devices->push_back(*device);
}
}
}
// Helper for picking the device that was requested for an OpenDevice request.
// If the device requested is not available it will revert to using the first
// available one instead or will return an empty list if no devices of the
// requested kind are present. Called on the UI thread.
void GetRequestedDevice(const std::string& requested_device_id,
bool audio,
bool video,
blink::MediaStreamDevices* devices) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (cef::IsAlloyRuntimeEnabled()) {
CefMediaCaptureDevicesDispatcher::GetInstance()->GetRequestedDevice(
requested_device_id, audio, video, devices);
return;
}
#endif
GetRequestedDeviceChrome(requested_device_id, audio, video, devices);
}
class CefMediaAccessQuery { class CefMediaAccessQuery {
public: public:
using CallbackType = content::MediaResponseCallback; using CallbackType = content::MediaResponseCallback;
@ -136,9 +207,8 @@ class CefMediaAccessQuery {
!request_.requested_audio_device_ids.front().empty()) { !request_.requested_audio_device_ids.front().empty()) {
// Pick the desired device or fall back to the first available of the // Pick the desired device or fall back to the first available of the
// given type. // given type.
CefMediaCaptureDevicesDispatcher::GetInstance()->GetRequestedDevice( GetRequestedDevice(request_.requested_audio_device_ids.front(), true,
request_.requested_audio_device_ids.front(), true, false, false, &audio_devices);
&audio_devices);
} }
if (device_video_requested() && if (device_video_requested() &&
@ -146,9 +216,8 @@ class CefMediaAccessQuery {
!request_.requested_video_device_ids.front().empty()) { !request_.requested_video_device_ids.front().empty()) {
// Pick the desired device or fall back to the first available of the // Pick the desired device or fall back to the first available of the
// given type. // given type.
CefMediaCaptureDevicesDispatcher::GetInstance()->GetRequestedDevice( GetRequestedDevice(request_.requested_video_device_ids.front(), false,
request_.requested_video_device_ids.front(), false, true, true, &video_devices);
&video_devices);
} }
if (desktop_audio_requested()) { if (desktop_audio_requested()) {

View File

@ -13,7 +13,6 @@
#include "include/cef_version.h" #include "include/cef_version.h"
#include "libcef/browser/extensions/chrome_api_registration.h" #include "libcef/browser/extensions/chrome_api_registration.h"
#include "libcef/browser/frame_host_impl.h" #include "libcef/browser/frame_host_impl.h"
#include "libcef/browser/net/internal_scheme_handler.h"
#include "libcef/browser/thread_util.h" #include "libcef/browser/thread_util.h"
#include "libcef/common/app_manager.h" #include "libcef/common/app_manager.h"
#include "libcef/features/runtime.h" #include "libcef/features/runtime.h"
@ -23,6 +22,7 @@
#include "base/lazy_instance.h" #include "base/lazy_instance.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "base/memory/ref_counted_memory.h"
#include "base/path_service.h" #include "base/path_service.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "base/strings/stringprintf.h" #include "base/strings/stringprintf.h"
@ -163,6 +163,7 @@ bool IsUnlistedHost(const std::string& host) {
return false; return false;
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Returns true if a host is WebUI and should be allowed to load. // Returns true if a host is WebUI and should be allowed to load.
bool IsAllowedWebUIHost(const std::string& host) { bool IsAllowedWebUIHost(const std::string& host) {
// Chrome runtime allows all WebUI hosts. // Chrome runtime allows all WebUI hosts.
@ -179,6 +180,7 @@ bool IsAllowedWebUIHost(const std::string& host) {
return false; return false;
} }
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Additional debug URLs that are not included in chrome::kChromeDebugURLs. // Additional debug URLs that are not included in chrome::kChromeDebugURLs.
const char* kAllowedDebugURLs[] = { const char* kAllowedDebugURLs[] = {
@ -294,16 +296,8 @@ class TemplateParser {
bool OnExtensionsSupportUI(std::string* mime_type, std::string* output) { bool OnExtensionsSupportUI(std::string* mime_type, std::string* output) {
*mime_type = "text/html"; *mime_type = "text/html";
if (cef::IsChromeRuntimeEnabled()) { #if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Redirect to the Chrome documentation. if (cef::IsAlloyRuntimeEnabled()) {
*output =
"<html><head>\n"
"<meta http-equiv=\"refresh\" "
"content=\"0;URL='https://developer.chrome.com/docs/extensions/'\"/>\n"
"</head></html>\n";
return true;
}
static const char kDevURL[] = "https://developer.chrome.com/extensions/"; static const char kDevURL[] = "https://developer.chrome.com/extensions/";
std::string html = std::string html =
@ -353,6 +347,16 @@ bool OnExtensionsSupportUI(std::string* mime_type, std::string* output) {
*output = html; *output = html;
return true; return true;
} }
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Redirect to the Chrome documentation.
*output =
"<html><head>\n"
"<meta http-equiv=\"refresh\" "
"content=\"0;URL='https://developer.chrome.com/docs/extensions/'\"/>\n"
"</head></html>\n";
return true;
}
bool OnLicenseUI(std::string* mime_type, std::string* output) { bool OnLicenseUI(std::string* mime_type, std::string* output) {
std::string piece = std::string piece =
@ -534,6 +538,7 @@ class CefWebUIControllerFactory : public content::WebUIControllerFactory {
// Returns true if WebUI is allowed to handle the specified |url|. // Returns true if WebUI is allowed to handle the specified |url|.
static bool AllowWebUIForURL(const GURL& url) { static bool AllowWebUIForURL(const GURL& url) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (cef::IsChromeRuntimeEnabled() && if (cef::IsChromeRuntimeEnabled() &&
url.SchemeIs(content::kChromeDevToolsScheme)) { url.SchemeIs(content::kChromeDevToolsScheme)) {
return DevToolsUIBindings::IsValidFrontendURL(url); return DevToolsUIBindings::IsValidFrontendURL(url);
@ -549,6 +554,18 @@ class CefWebUIControllerFactory : public content::WebUIControllerFactory {
} }
return false; return false;
#else // !BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (url.SchemeIs(content::kChromeDevToolsScheme)) {
return DevToolsUIBindings::IsValidFrontendURL(url);
}
if (!url.SchemeIs(content::kChromeUIScheme) &&
!url.SchemeIs(content::kChromeUIUntrustedScheme)) {
return false;
}
return true;
#endif // ! BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
} }
// Returns true if WebUI is allowed to make network requests. // Returns true if WebUI is allowed to make network requests.
@ -650,6 +667,7 @@ class CefWebUIControllerFactory : public content::WebUIControllerFactory {
} }
static void BrowserURLHandlerCreated(content::BrowserURLHandler* handler) { static void BrowserURLHandlerCreated(content::BrowserURLHandler* handler) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// For Chrome runtime this is registered in // For Chrome runtime this is registered in
// ChromeContentBrowserClient::BrowserURLHandlerCreated(). // ChromeContentBrowserClient::BrowserURLHandlerCreated().
if (cef::IsAlloyRuntimeEnabled()) { if (cef::IsAlloyRuntimeEnabled()) {
@ -657,6 +675,7 @@ class CefWebUIControllerFactory : public content::WebUIControllerFactory {
handler->AddHandlerPair(&HandleChromeAboutAndChromeSyncRewrite, handler->AddHandlerPair(&HandleChromeAboutAndChromeSyncRewrite,
content::BrowserURLHandler::null_handler()); content::BrowserURLHandler::null_handler());
} }
#endif
// chrome: & friends. For Chrome runtime the default registration is // chrome: & friends. For Chrome runtime the default registration is
// disabled is ChromeContentBrowserClient::BrowserURLHandlerCreated(). // disabled is ChromeContentBrowserClient::BrowserURLHandlerCreated().

View File

@ -254,7 +254,11 @@ std::unique_ptr<permissions::PermissionPrompt> CreatePermissionPromptImpl(
bool* default_handling) { bool* default_handling) {
CEF_REQUIRE_UIT(); CEF_REQUIRE_UIT();
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool is_alloy_style = cef::IsAlloyRuntimeEnabled(); bool is_alloy_style = cef::IsAlloyRuntimeEnabled();
#else
bool is_alloy_style = false;
#endif
if (auto browser = CefBrowserHostBase::GetBrowserForContents(web_contents)) { if (auto browser = CefBrowserHostBase::GetBrowserForContents(web_contents)) {
is_alloy_style = browser->IsAlloyStyle(); is_alloy_style = browser->IsAlloyStyle();

View File

@ -6,8 +6,15 @@
#include "libcef/browser/browser_context.h" #include "libcef/browser/browser_context.h"
#include "libcef/browser/context.h" #include "libcef/browser/context.h"
#include "libcef/browser/media_capture_devices_dispatcher.h"
#include "libcef/browser/prefs/pref_registrar.h" #include "libcef/browser/prefs/pref_registrar.h"
#include "chrome/browser/profiles/profile.h"
#include "components/language/core/browser/pref_names.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "libcef/browser/media_capture_devices_dispatcher.h"
#include "libcef/browser/prefs/pref_store.h" #include "libcef/browser/prefs/pref_store.h"
#include "libcef/browser/prefs/renderer_prefs.h" #include "libcef/browser/prefs/renderer_prefs.h"
#include "libcef/common/cef_switches.h" #include "libcef/common/cef_switches.h"
@ -26,7 +33,6 @@
#include "chrome/browser/prefs/chrome_command_line_pref_store.h" #include "chrome/browser/prefs/chrome_command_line_pref_store.h"
#include "chrome/browser/preloading/preloading_prefs.h" #include "chrome/browser/preloading/preloading_prefs.h"
#include "chrome/browser/printing/print_preview_sticky_settings.h" #include "chrome/browser/printing/print_preview_sticky_settings.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_key.h" #include "chrome/browser/profiles/profile_key.h"
#include "chrome/browser/ssl/ssl_config_service_manager.h" #include "chrome/browser/ssl/ssl_config_service_manager.h"
#include "chrome/browser/supervised_user/supervised_user_settings_service_factory.h" #include "chrome/browser/supervised_user/supervised_user_settings_service_factory.h"
@ -47,7 +53,6 @@
#include "components/flags_ui/pref_service_flags_storage.h" #include "components/flags_ui/pref_service_flags_storage.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h" #include "components/keyed_service/content/browser_context_dependency_manager.h"
#include "components/language/core/browser/language_prefs.h" #include "components/language/core/browser/language_prefs.h"
#include "components/language/core/browser/pref_names.h"
#include "components/media_device_salt/media_device_id_salt.h" #include "components/media_device_salt/media_device_id_salt.h"
#include "components/permissions/permission_actions_history.h" #include "components/permissions/permission_actions_history.h"
#include "components/permissions/permission_hats_trigger_helper.h" #include "components/permissions/permission_hats_trigger_helper.h"
@ -55,8 +60,6 @@
#include "components/pref_registry/pref_registry_syncable.h" #include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/json_pref_store.h" #include "components/prefs/json_pref_store.h"
#include "components/prefs/pref_filter.h" #include "components/prefs/pref_filter.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
#include "components/privacy_sandbox/privacy_sandbox_prefs.h" #include "components/privacy_sandbox/privacy_sandbox_prefs.h"
#include "components/proxy_config/pref_proxy_config_tracker_impl.h" #include "components/proxy_config/pref_proxy_config_tracker_impl.h"
#include "components/proxy_config/proxy_config_dictionary.h" #include "components/proxy_config/proxy_config_dictionary.h"
@ -79,6 +82,7 @@
#if BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_WIN)
#include "components/os_crypt/sync/os_crypt.h" #include "components/os_crypt/sync/os_crypt.h"
#endif #endif
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
namespace browser_prefs { namespace browser_prefs {
@ -108,10 +112,12 @@ std::string GetAcceptLanguageListSetting(Profile* profile) {
return std::string(); return std::string();
} }
} // namespace #if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
constexpr char kUserPrefsFileName[] = "UserPrefs.json";
constexpr char kLocalPrefsFileName[] = "LocalPrefs.json";
#endif
const char kUserPrefsFileName[] = "UserPrefs.json"; } // namespace
const char kLocalPrefsFileName[] = "LocalPrefs.json";
void RegisterLocalStatePrefs(PrefRegistrySimple* registry) { void RegisterLocalStatePrefs(PrefRegistrySimple* registry) {
pref_registrar::RegisterCustomPrefs(CEF_PREFERENCES_TYPE_GLOBAL, registry); pref_registrar::RegisterCustomPrefs(CEF_PREFERENCES_TYPE_GLOBAL, registry);
@ -122,6 +128,7 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) {
registry); registry);
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
std::unique_ptr<PrefService> CreatePrefService(Profile* profile, std::unique_ptr<PrefService> CreatePrefService(Profile* profile,
const base::FilePath& cache_path, const base::FilePath& cache_path,
bool persist_user_preferences) { bool persist_user_preferences) {
@ -349,6 +356,7 @@ std::unique_ptr<PrefService> CreatePrefService(Profile* profile,
// Build the PrefService that manages the PrefRegistry and PrefStores. // Build the PrefService that manages the PrefRegistry and PrefStores.
return factory.CreateSyncable(registry.get()); return factory.CreateSyncable(registry.get());
} }
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
std::string GetAcceptLanguageList(Profile* profile) { std::string GetAcceptLanguageList(Profile* profile) {
// Always prefer to the CEF settings configuration, if specified. // Always prefer to the CEF settings configuration, if specified.

View File

@ -6,30 +6,36 @@
#define CEF_LIBCEF_BROWSER_PREFS_BROWSER_PREFS_H_ #define CEF_LIBCEF_BROWSER_PREFS_BROWSER_PREFS_H_
#include <memory> #include <memory>
#include <string>
#include "cef/libcef/features/features.h"
class PrefRegistrySimple;
class Profile;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
namespace base { namespace base {
class FilePath; class FilePath;
} }
class PrefRegistrySimple;
class PrefService; class PrefService;
class Profile; #endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
namespace browser_prefs { namespace browser_prefs {
// Name for the user prefs JSON file.
extern const char kUserPrefsFileName[];
// Register preferences specific to CEF. // Register preferences specific to CEF.
// Called from chrome/browser/prefs/browser_prefs.cc
void RegisterLocalStatePrefs(PrefRegistrySimple* registry); void RegisterLocalStatePrefs(PrefRegistrySimple* registry);
void RegisterProfilePrefs(PrefRegistrySimple* registry); void RegisterProfilePrefs(PrefRegistrySimple* registry);
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Create the PrefService used to manage pref registration and storage. // Create the PrefService used to manage pref registration and storage.
// |profile| will be nullptr for the system-level PrefService. Used with the // |profile| will be nullptr for the system-level PrefService. Used with the
// Alloy runtime only. // Alloy runtime only.
std::unique_ptr<PrefService> CreatePrefService(Profile* profile, std::unique_ptr<PrefService> CreatePrefService(Profile* profile,
const base::FilePath& cache_path, const base::FilePath& cache_path,
bool persist_user_preferences); bool persist_user_preferences);
#endif
// Returns the value for populating the accept-language HTTP request header. // Returns the value for populating the accept-language HTTP request header.
// |browser_context| and/or |browser| may be nullptr. If |expand| is true then // |browser_context| and/or |browser| may be nullptr. If |expand| is true then

View File

@ -4,15 +4,18 @@
#include "libcef/browser/prefs/renderer_prefs.h" #include "libcef/browser/prefs/renderer_prefs.h"
#include <string> #include "libcef/common/cef_switches.h"
#include "base/command_line.h"
#include "content/public/common/content_switches.h"
#include "third_party/blink/public/common/web_preferences/web_preferences.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "libcef/browser/alloy/alloy_browser_host_impl.h" #include "libcef/browser/alloy/alloy_browser_host_impl.h"
#include "libcef/browser/context.h" #include "libcef/browser/context.h"
#include "libcef/common/cef_switches.h"
#include "libcef/common/extensions/extensions_util.h" #include "libcef/common/extensions/extensions_util.h"
#include "libcef/features/runtime_checks.h" #include "libcef/features/runtime_checks.h"
#include "base/command_line.h"
#include "base/i18n/character_encoding.h" #include "base/i18n/character_encoding.h"
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "base/values.h" #include "base/values.h"
@ -41,12 +44,14 @@
#include "extensions/common/constants.h" #include "extensions/common/constants.h"
#include "media/media_buildflags.h" #include "media/media_buildflags.h"
#include "third_party/blink/public/common/peerconnection/webrtc_ip_handling_policy.h" #include "third_party/blink/public/common/peerconnection/webrtc_ip_handling_policy.h"
#include "third_party/blink/public/common/web_preferences/web_preferences.h"
#include "ui/color/color_provider_key.h" #include "ui/color/color_provider_key.h"
#include "ui/native_theme/native_theme.h" #include "ui/native_theme/native_theme.h"
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
namespace renderer_prefs { namespace renderer_prefs {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
namespace { namespace {
// Chrome preferences. // Chrome preferences.
@ -266,6 +271,8 @@ void SetCommandLinePrefDefaults(CommandLinePrefStore* prefs) {
} }
} }
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void SetDefaultPrefs(blink::web_pref::WebPreferences& web) { void SetDefaultPrefs(blink::web_pref::WebPreferences& web) {
const base::CommandLine* command_line = const base::CommandLine* command_line =
base::CommandLine::ForCurrentProcess(); base::CommandLine::ForCurrentProcess();
@ -358,6 +365,8 @@ void SetCefPrefs(const CefBrowserSettings& cef,
} }
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
const std::string& locale) { const std::string& locale) {
PrefsTabHelper::RegisterProfilePrefs(registry, locale); PrefsTabHelper::RegisterProfilePrefs(registry, locale);
@ -457,4 +466,6 @@ bool PopulateWebPreferencesAfterNavigation(
web_contents, native_theme); web_contents, native_theme);
} }
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
} // namespace renderer_prefs } // namespace renderer_prefs

View File

@ -6,16 +6,21 @@
#define CEF_LIBCEF_BROWSER_PREFS_RENDERER_PREFS_H_ #define CEF_LIBCEF_BROWSER_PREFS_RENDERER_PREFS_H_
#pragma once #pragma once
#include <string>
#include "include/internal/cef_types_wrappers.h" #include "include/internal/cef_types_wrappers.h"
#include "third_party/skia/include/core/SkColor.h" #include "cef/libcef/features/features.h"
class CommandLinePrefStore; #if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "third_party/skia/include/core/SkColor.h"
#endif
namespace blink::web_pref { namespace blink::web_pref {
struct WebPreferences; struct WebPreferences;
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
namespace content { namespace content {
class RenderViewHost; class RenderViewHost;
class WebContents; class WebContents;
@ -25,8 +30,12 @@ namespace user_prefs {
class PrefRegistrySyncable; class PrefRegistrySyncable;
} }
class CommandLinePrefStore;
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
namespace renderer_prefs { namespace renderer_prefs {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Register additional renderer-related preferences. // Register additional renderer-related preferences.
void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
const std::string& locale); const std::string& locale);
@ -35,6 +44,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
// available via the PrefService. Chromium command-line flags should not exist // available via the PrefService. Chromium command-line flags should not exist
// for these preferences. // for these preferences.
void SetCommandLinePrefDefaults(CommandLinePrefStore* prefs); void SetCommandLinePrefDefaults(CommandLinePrefStore* prefs);
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Set default values based on CEF command-line flags for preferences that are // Set default values based on CEF command-line flags for preferences that are
// not available via the PrefService. Chromium command-line flags should not // not available via the PrefService. Chromium command-line flags should not
@ -45,6 +55,7 @@ void SetDefaultPrefs(blink::web_pref::WebPreferences& web);
void SetCefPrefs(const CefBrowserSettings& cef, void SetCefPrefs(const CefBrowserSettings& cef,
blink::web_pref::WebPreferences& web); blink::web_pref::WebPreferences& web);
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Populate WebPreferences based on a combination of command-line values, // Populate WebPreferences based on a combination of command-line values,
// PrefService and CefBrowserSettings. // PrefService and CefBrowserSettings.
void PopulateWebPreferences(content::RenderViewHost* rvh, void PopulateWebPreferences(content::RenderViewHost* rvh,
@ -53,6 +64,7 @@ void PopulateWebPreferences(content::RenderViewHost* rvh,
bool PopulateWebPreferencesAfterNavigation( bool PopulateWebPreferencesAfterNavigation(
content::WebContents* web_contents, content::WebContents* web_contents,
blink::web_pref::WebPreferences& web); blink::web_pref::WebPreferences& web);
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
} // namespace renderer_prefs } // namespace renderer_prefs

View File

@ -490,6 +490,7 @@ void CefRequestContextImpl::LoadExtension(
const CefString& root_directory, const CefString& root_directory,
CefRefPtr<CefDictionaryValue> manifest, CefRefPtr<CefDictionaryValue> manifest,
CefRefPtr<CefExtensionHandler> handler) { CefRefPtr<CefExtensionHandler> handler) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
GetBrowserContext(content::GetUIThreadTaskRunner({}), GetBrowserContext(content::GetUIThreadTaskRunner({}),
base::BindOnce( base::BindOnce(
[](const CefString& root_directory, [](const CefString& root_directory,
@ -505,20 +506,34 @@ void CefRequestContextImpl::LoadExtension(
}, },
root_directory, manifest, handler, root_directory, manifest, handler,
CefRefPtr<CefRequestContextImpl>(this))); CefRefPtr<CefRequestContextImpl>(this)));
#else
NOTIMPLEMENTED();
#endif
} }
bool CefRequestContextImpl::DidLoadExtension(const CefString& extension_id) { bool CefRequestContextImpl::DidLoadExtension(const CefString& extension_id) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
CefRefPtr<CefExtension> extension = GetExtension(extension_id); CefRefPtr<CefExtension> extension = GetExtension(extension_id);
// GetLoaderContext() will return NULL for internal extensions. // GetLoaderContext() will return NULL for internal extensions.
return extension && IsSame(extension->GetLoaderContext()); return extension && IsSame(extension->GetLoaderContext());
#else
NOTIMPLEMENTED();
return false;
#endif
} }
bool CefRequestContextImpl::HasExtension(const CefString& extension_id) { bool CefRequestContextImpl::HasExtension(const CefString& extension_id) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
return !!GetExtension(extension_id); return !!GetExtension(extension_id);
#else
NOTIMPLEMENTED();
return false;
#endif
} }
bool CefRequestContextImpl::GetExtensions( bool CefRequestContextImpl::GetExtensions(
std::vector<CefString>& extension_ids) { std::vector<CefString>& extension_ids) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
extension_ids.clear(); extension_ids.clear();
if (!VerifyBrowserContext()) { if (!VerifyBrowserContext()) {
@ -526,15 +541,24 @@ bool CefRequestContextImpl::GetExtensions(
} }
return browser_context()->GetExtensions(extension_ids); return browser_context()->GetExtensions(extension_ids);
#else
NOTIMPLEMENTED();
return false;
#endif
} }
CefRefPtr<CefExtension> CefRequestContextImpl::GetExtension( CefRefPtr<CefExtension> CefRequestContextImpl::GetExtension(
const CefString& extension_id) { const CefString& extension_id) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (!VerifyBrowserContext()) { if (!VerifyBrowserContext()) {
return nullptr; return nullptr;
} }
return browser_context()->GetExtension(extension_id); return browser_context()->GetExtension(extension_id);
#else
NOTIMPLEMENTED();
return nullptr;
#endif
} }
CefRefPtr<CefMediaRouter> CefRequestContextImpl::GetMediaRouter( CefRefPtr<CefMediaRouter> CefRequestContextImpl::GetMediaRouter(

View File

@ -40,12 +40,17 @@ std::optional<cef_gesture_command_t> GetGestureCommand(
bool ComputeAlloyStyle(CefBrowserViewDelegate* cef_delegate, bool ComputeAlloyStyle(CefBrowserViewDelegate* cef_delegate,
bool is_devtools_popup) { bool is_devtools_popup) {
// Alloy style is not supported with Chrome DevTools popups. // Alloy style is not supported with Chrome DevTools popups.
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
const bool supports_alloy_style = const bool supports_alloy_style =
cef::IsAlloyRuntimeEnabled() || !is_devtools_popup; cef::IsAlloyRuntimeEnabled() || !is_devtools_popup;
const bool supports_chrome_style = cef::IsChromeRuntimeEnabled(); const bool supports_chrome_style = cef::IsChromeRuntimeEnabled();
const auto default_style = cef::IsAlloyRuntimeEnabled() const auto default_style = cef::IsAlloyRuntimeEnabled()
? CEF_RUNTIME_STYLE_ALLOY ? CEF_RUNTIME_STYLE_ALLOY
: CEF_RUNTIME_STYLE_CHROME; : CEF_RUNTIME_STYLE_CHROME;
#else
const bool supports_alloy_style = !is_devtools_popup;
const auto default_style = CEF_RUNTIME_STYLE_CHROME;
#endif
auto result_style = default_style; auto result_style = default_style;
@ -59,12 +64,17 @@ bool ComputeAlloyStyle(CefBrowserViewDelegate* cef_delegate,
"Chrome style is supported"; "Chrome style is supported";
} }
} else if (requested_style == CEF_RUNTIME_STYLE_CHROME) { } else if (requested_style == CEF_RUNTIME_STYLE_CHROME) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (supports_chrome_style) { if (supports_chrome_style) {
result_style = requested_style; result_style = requested_style;
} else { } else {
LOG(ERROR) << "GetBrowserRuntimeStyle() requested Chrome style; only " LOG(ERROR) << "GetBrowserRuntimeStyle() requested Chrome style; only "
"Alloy style is supported"; "Alloy style is supported";
} }
#else
// Chrome style is always supported.
result_style = requested_style;
#endif
} }
} }

View File

@ -356,15 +356,20 @@ void UpdateModalDialogPosition(views::Widget* widget,
} }
bool ComputeAlloyStyle(CefWindowDelegate* cef_delegate) { bool ComputeAlloyStyle(CefWindowDelegate* cef_delegate) {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
const bool supports_chrome_style = cef::IsChromeRuntimeEnabled(); const bool supports_chrome_style = cef::IsChromeRuntimeEnabled();
const auto default_style = cef::IsAlloyRuntimeEnabled() const auto default_style = cef::IsAlloyRuntimeEnabled()
? CEF_RUNTIME_STYLE_ALLOY ? CEF_RUNTIME_STYLE_ALLOY
: CEF_RUNTIME_STYLE_CHROME; : CEF_RUNTIME_STYLE_CHROME;
#else
const auto default_style = CEF_RUNTIME_STYLE_CHROME;
#endif
auto result_style = default_style; auto result_style = default_style;
if (cef_delegate) { if (cef_delegate) {
auto requested_style = cef_delegate->GetWindowRuntimeStyle(); auto requested_style = cef_delegate->GetWindowRuntimeStyle();
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
if (requested_style == CEF_RUNTIME_STYLE_ALLOY) { if (requested_style == CEF_RUNTIME_STYLE_ALLOY) {
// Alloy style is always supported. // Alloy style is always supported.
result_style = requested_style; result_style = requested_style;
@ -376,6 +381,11 @@ bool ComputeAlloyStyle(CefWindowDelegate* cef_delegate) {
"Alloy style is supported"; "Alloy style is supported";
} }
} }
#else
if (requested_style != CEF_RUNTIME_STYLE_DEFAULT) {
result_style = requested_style;
}
#endif
} }
return result_style == CEF_RUNTIME_STYLE_ALLOY; return result_style == CEF_RUNTIME_STYLE_ALLOY;

View File

@ -5,7 +5,6 @@
#include "libcef/common/app_manager.h" #include "libcef/common/app_manager.h"
#include "libcef/common/net/scheme_info.h" #include "libcef/common/net/scheme_info.h"
#include "libcef/common/net/scheme_registration.h"
#include "libcef/common/scheme_registrar_impl.h" #include "libcef/common/scheme_registrar_impl.h"
#include "base/command_line.h" #include "base/command_line.h"
@ -18,6 +17,10 @@
#include "base/path_service.h" #include "base/path_service.h"
#endif #endif
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "libcef/common/net/scheme_registration.h"
#endif
namespace { namespace {
CefAppManager* g_manager = nullptr; CefAppManager* g_manager = nullptr;
@ -88,7 +91,9 @@ void CefAppManager::AddAdditionalSchemes(
schemeRegistrar.GetSchemes(schemes); schemeRegistrar.GetSchemes(schemes);
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
scheme::AddInternalSchemes(schemes); scheme::AddInternalSchemes(schemes);
#endif
scheme_info_list_locked_ = true; scheme_info_list_locked_ = true;
} }

View File

@ -108,8 +108,10 @@ const char kDisableNewBrowserInfoTimeout[] = "disable-new-browser-info-timeout";
// File used for logging DevTools protocol messages. // File used for logging DevTools protocol messages.
const char kDevToolsProtocolLogFile[] = "devtools-protocol-log-file"; const char kDevToolsProtocolLogFile[] = "devtools-protocol-log-file";
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Enable use of the Chrome runtime in CEF. See issue #2969 for details. // Enable use of the Chrome runtime in CEF. See issue #2969 for details.
const char kEnableChromeRuntime[] = "enable-chrome-runtime"; const char kEnableChromeRuntime[] = "enable-chrome-runtime";
#endif
// Delegate all login requests to the client GetAuthCredentials callback when // Delegate all login requests to the client GetAuthCredentials callback when
// using the Chrome runtime. // using the Chrome runtime.

View File

@ -9,6 +9,7 @@
#pragma once #pragma once
#include "build/build_config.h" #include "build/build_config.h"
#include "cef/libcef/features/features.h"
namespace switches { namespace switches {
@ -52,7 +53,9 @@ extern const char kDisablePdfExtension[];
extern const char kEnablePrintPreview[]; extern const char kEnablePrintPreview[];
extern const char kDisableNewBrowserInfoTimeout[]; extern const char kDisableNewBrowserInfoTimeout[];
extern const char kDevToolsProtocolLogFile[]; extern const char kDevToolsProtocolLogFile[];
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
extern const char kEnableChromeRuntime[]; extern const char kEnableChromeRuntime[];
#endif
extern const char kDisableChromeLoginPrompt[]; extern const char kDisableChromeLoginPrompt[];
extern const char kUserAgentProductAndVersion[]; extern const char kUserAgentProductAndVersion[];
extern const char kDisableRequestHandlingForTesting[]; extern const char kDisableRequestHandlingForTesting[];

View File

@ -5,6 +5,8 @@
#ifndef CEF_LIBCEF_COMMON_EXTENSIONS_EXTENSIONS_UTIL_H_ #ifndef CEF_LIBCEF_COMMON_EXTENSIONS_EXTENSIONS_UTIL_H_
#define CEF_LIBCEF_COMMON_EXTENSIONS_EXTENSIONS_UTIL_H_ #define CEF_LIBCEF_COMMON_EXTENSIONS_EXTENSIONS_UTIL_H_
#include "cef/libcef/features/runtime.h"
namespace extensions { namespace extensions {
// Returns true if extensions have not been disabled via the command-line. // Returns true if extensions have not been disabled via the command-line.

View File

@ -4,8 +4,6 @@
#include "libcef/common/net/scheme_registration.h" #include "libcef/common/net/scheme_registration.h"
#include "libcef/common/app_manager.h"
#include "libcef/common/net/scheme_info.h"
#include "libcef/features/runtime.h" #include "libcef/features/runtime.h"
#include "base/containers/contains.h" #include "base/containers/contains.h"
@ -14,8 +12,14 @@
#include "url/url_constants.h" #include "url/url_constants.h"
#include "url/url_util.h" #include "url/url_util.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "libcef/common/app_manager.h"
#include "libcef/common/net/scheme_info.h"
#endif
namespace scheme { namespace scheme {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void AddInternalSchemes(content::ContentClient::Schemes* schemes) { void AddInternalSchemes(content::ContentClient::Schemes* schemes) {
if (!cef::IsAlloyRuntimeEnabled()) { if (!cef::IsAlloyRuntimeEnabled()) {
return; return;
@ -60,6 +64,7 @@ void AddInternalSchemes(content::ContentClient::Schemes* schemes) {
CefAppManager::Get()->AddCustomScheme(&scheme); CefAppManager::Get()->AddCustomScheme(&scheme);
} }
} }
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
bool IsInternalHandledScheme(const std::string& scheme) { bool IsInternalHandledScheme(const std::string& scheme) {
static const char* schemes[] = { static const char* schemes[] = {

View File

@ -9,12 +9,18 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "cef/libcef/features/features.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "content/public/common/content_client.h" #include "content/public/common/content_client.h"
#endif
namespace scheme { namespace scheme {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Add internal schemes. // Add internal schemes.
void AddInternalSchemes(content::ContentClient::Schemes* schemes); void AddInternalSchemes(content::ContentClient::Schemes* schemes);
#endif
// Returns true if the specified |scheme| is handled internally. // Returns true if the specified |scheme| is handled internally.
bool IsInternalHandledScheme(const std::string& scheme); bool IsInternalHandledScheme(const std::string& scheme);

View File

@ -8,18 +8,24 @@
#include <dlfcn.h> #include <dlfcn.h>
#endif #endif
#include "libcef/features/runtime.h" #include "base/base_paths.h"
#include "base/command_line.h" #include "base/command_line.h"
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/notreached.h"
#include "base/path_service.h" #include "base/path_service.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_paths_internal.h"
#include "chrome/common/chrome_switches.h" #include "chrome/common/chrome_switches.h"
#if BUILDFLAG(IS_LINUX)
#include "base/environment.h"
#include "base/nix/xdg_util.h"
#endif
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "base/files/file_util.h"
#include "base/notreached.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_paths_internal.h"
#include "ui/base/layout.h" #include "ui/base/layout.h"
#if BUILDFLAG(IS_MAC) #if BUILDFLAG(IS_MAC)
@ -27,14 +33,10 @@
#include "libcef/common/util_mac.h" #include "libcef/common/util_mac.h"
#endif #endif
#if BUILDFLAG(IS_LINUX)
#include "base/environment.h"
#include "base/nix/xdg_util.h"
#endif
#if BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_WIN)
#include "base/win/registry.h" #include "base/win/registry.h"
#endif #endif
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
namespace resource_util { namespace resource_util {
@ -116,6 +118,12 @@ base::FilePath GetUserDataPath(CefSettings* settings,
return result; return result;
} }
} // namespace
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
namespace {
// Consider downloads 'dangerous' if they go to the home directory on Linux and // Consider downloads 'dangerous' if they go to the home directory on Linux and
// to the desktop on any platform. // to the desktop on any platform.
// From chrome/browser/download/download_prefs.cc. // From chrome/browser/download/download_prefs.cc.
@ -206,6 +214,16 @@ void OverrideDefaultDownloadDir() {
} }
} }
// Same as ui::ResourceBundle::IsScaleFactorSupported.
bool IsScaleFactorSupported(ui::ResourceScaleFactor scale_factor) {
const auto& supported_scale_factors = ui::GetSupportedResourceScaleFactors();
return std::find(supported_scale_factors.begin(),
supported_scale_factors.end(),
scale_factor) != supported_scale_factors.end();
}
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void OverrideUserDataDir(CefSettings* settings, void OverrideUserDataDir(CefSettings* settings,
const base::CommandLine* command_line) { const base::CommandLine* command_line) {
const base::FilePath& user_data_path = const base::FilePath& user_data_path =
@ -223,14 +241,6 @@ void OverrideUserDataDir(CefSettings* settings,
true); // Create if necessary. true); // Create if necessary.
} }
// Same as ui::ResourceBundle::IsScaleFactorSupported.
bool IsScaleFactorSupported(ui::ResourceScaleFactor scale_factor) {
const auto& supported_scale_factors = ui::GetSupportedResourceScaleFactors();
return std::find(supported_scale_factors.begin(),
supported_scale_factors.end(),
scale_factor) != supported_scale_factors.end();
}
#if BUILDFLAG(IS_LINUX) #if BUILDFLAG(IS_LINUX)
void OverrideAssetPath() { void OverrideAssetPath() {
Dl_info dl_info; Dl_info dl_info;

View File

@ -8,15 +8,22 @@
#include "include/cef_base.h" #include "include/cef_base.h"
#include "cef/libcef/features/features.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "ui/base/resource/resource_scale_factor.h" #include "ui/base/resource/resource_scale_factor.h"
#endif
namespace base { namespace base {
class CommandLine; class CommandLine;
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
class FilePath; class FilePath;
#endif
} // namespace base } // namespace base
namespace resource_util { namespace resource_util {
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Returns the directory that contains resource files (*.bin, *.dat, *.pak, // Returns the directory that contains resource files (*.bin, *.dat, *.pak,
// etc). // etc).
base::FilePath GetResourcesDir(); base::FilePath GetResourcesDir();
@ -26,11 +33,13 @@ base::FilePath GetDefaultLogFilePath();
// Called from MainDelegate::PreSandboxStartup. // Called from MainDelegate::PreSandboxStartup.
void OverrideDefaultDownloadDir(); void OverrideDefaultDownloadDir();
void OverrideUserDataDir(CefSettings* settings,
const base::CommandLine* command_line);
// Returns true if |scale_factor| is supported by this platform. // Returns true if |scale_factor| is supported by this platform.
bool IsScaleFactorSupported(ui::ResourceScaleFactor scale_factor); bool IsScaleFactorSupported(ui::ResourceScaleFactor scale_factor);
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
void OverrideUserDataDir(CefSettings* settings,
const base::CommandLine* command_line);
#if BUILDFLAG(IS_LINUX) #if BUILDFLAG(IS_LINUX)
// Look for binary files (*.bin, *.dat, *.pak, chrome-sandbox, libGLESv2.so, // Look for binary files (*.bin, *.dat, *.pak, chrome-sandbox, libGLESv2.so,

View File

@ -80,6 +80,7 @@ buildflag_header("features") {
header = "features.h" header = "features.h"
flags = [ flags = [
"ENABLE_ALLOY_BOOTSTRAP=$enable_alloy_bootstrap",
"ENABLE_CEF=$enable_cef", "ENABLE_CEF=$enable_cef",
"IS_CEF_SANDBOX_BUILD=$is_cef_sandbox_build", "IS_CEF_SANDBOX_BUILD=$is_cef_sandbox_build",
] ]

View File

@ -12,3 +12,9 @@ declare_args() {
# PERFORMANCE AND/OR SECURITY IMPLICATIONS. # PERFORMANCE AND/OR SECURITY IMPLICATIONS.
is_cef_sandbox_build = false is_cef_sandbox_build = false
} }
declare_args() {
# Enables the Alloy bootstrap. This will be disabled and removed in ~M127.
# See issue #3685.
enable_alloy_bootstrap = enable_cef
}

View File

@ -16,8 +16,10 @@ inline bool IsCefBuildEnabled() {
return true; return true;
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// True if CEF was initialized with the Alloy runtime. // True if CEF was initialized with the Alloy runtime.
bool IsAlloyRuntimeEnabled(); bool IsAlloyRuntimeEnabled();
#endif
// True if CEF was initialized with the Chrome runtime. // True if CEF was initialized with the Chrome runtime.
bool IsChromeRuntimeEnabled(); bool IsChromeRuntimeEnabled();
@ -25,14 +27,16 @@ bool IsChromeRuntimeEnabled();
// True if CEF crash reporting is enabled. // True if CEF crash reporting is enabled.
bool IsCrashReportingEnabled(); bool IsCrashReportingEnabled();
#else #else // !BUILDFLAG(ENABLE_CEF)
inline bool IsCefBuildEnabled() { inline bool IsCefBuildEnabled() {
return false; return false;
} }
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
inline bool IsAlloyRuntimeEnabled() { inline bool IsAlloyRuntimeEnabled() {
return false; return false;
} }
#endif
inline bool IsChromeRuntimeEnabled() { inline bool IsChromeRuntimeEnabled() {
return false; return false;
} }
@ -40,7 +44,7 @@ inline bool IsCrashReportingEnabled() {
return false; return false;
} }
#endif #endif // !BUILDFLAG(ENABLE_CEF)
} // namespace cef } // namespace cef

View File

@ -6,13 +6,18 @@
#define CEF_LIBCEF_FEATURES_RUNTIME_CHECKS_H_ #define CEF_LIBCEF_FEATURES_RUNTIME_CHECKS_H_
#pragma once #pragma once
#include "base/logging.h"
#include "cef/libcef/features/runtime.h" #include "cef/libcef/features/runtime.h"
#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#include "base/logging.h"
#define REQUIRE_ALLOY_RUNTIME() \ #define REQUIRE_ALLOY_RUNTIME() \
CHECK(cef::IsAlloyRuntimeEnabled()) << "Alloy runtime is required" CHECK(cef::IsAlloyRuntimeEnabled()) << "Alloy runtime is required"
#define REQUIRE_CHROME_RUNTIME() \ #define REQUIRE_CHROME_RUNTIME() \
CHECK(cef::IsChromeRuntimeEnabled()) << "Chrome runtime is required" CHECK(cef::IsChromeRuntimeEnabled()) << "Chrome runtime is required"
#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
#endif // CEF_LIBCEF_FEATURES_RUNTIME_CHECKS_H_ #endif // CEF_LIBCEF_FEATURES_RUNTIME_CHECKS_H_

View File

@ -1,5 +1,5 @@
diff --git chrome/browser/content_settings/host_content_settings_map_factory.cc chrome/browser/content_settings/host_content_settings_map_factory.cc diff --git chrome/browser/content_settings/host_content_settings_map_factory.cc chrome/browser/content_settings/host_content_settings_map_factory.cc
index 9356bf044a318..2499576dea7f0 100644 index 9356bf044a318..883c322eef5bb 100644
--- chrome/browser/content_settings/host_content_settings_map_factory.cc --- chrome/browser/content_settings/host_content_settings_map_factory.cc
+++ chrome/browser/content_settings/host_content_settings_map_factory.cc +++ chrome/browser/content_settings/host_content_settings_map_factory.cc
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
@ -14,7 +14,7 @@ index 9356bf044a318..2499576dea7f0 100644
#include "extensions/buildflags/buildflags.h" #include "extensions/buildflags/buildflags.h"
#include "ui/webui/webui_allowlist_provider.h" #include "ui/webui/webui_allowlist_provider.h"
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+#include "cef/libcef/common/extensions/extensions_util.h" +#include "cef/libcef/common/extensions/extensions_util.h"
+#endif +#endif
+ +
@ -25,11 +25,11 @@ index 9356bf044a318..2499576dea7f0 100644
#endif #endif
DependsOn(OneTimePermissionsTrackerFactory::GetInstance()); DependsOn(OneTimePermissionsTrackerFactory::GetInstance());
#if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(ENABLE_EXTENSIONS)
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled() || extensions::ExtensionsEnabled()) { + if (!cef::IsAlloyRuntimeEnabled() || extensions::ExtensionsEnabled()) {
+#endif +#endif
DependsOn(extensions::ContentSettingsService::GetFactoryInstance()); DependsOn(extensions::ContentSettingsService::GetFactoryInstance());
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif +#endif
#endif #endif
@ -39,7 +39,7 @@ index 9356bf044a318..2499576dea7f0 100644
std::move(allowlist_provider)); std::move(allowlist_provider));
#if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(ENABLE_EXTENSIONS)
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled() || extensions::ExtensionsEnabled()) { + if (!cef::IsAlloyRuntimeEnabled() || extensions::ExtensionsEnabled()) {
+#endif +#endif
// These must be registered before before the HostSettings are passed over to // These must be registered before before the HostSettings are passed over to
@ -49,7 +49,7 @@ index 9356bf044a318..2499576dea7f0 100644
// the case where profile->IsOffTheRecord() is true? And what is the // the case where profile->IsOffTheRecord() is true? And what is the
// interaction with profile->IsGuestSession()? // interaction with profile->IsGuestSession()?
false)); false));
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif +#endif
#endif // BUILDFLAG(ENABLE_EXTENSIONS) #endif // BUILDFLAG(ENABLE_EXTENSIONS)

View File

@ -1,5 +1,5 @@
diff --git chrome/browser/file_select_helper.cc chrome/browser/file_select_helper.cc diff --git chrome/browser/file_select_helper.cc chrome/browser/file_select_helper.cc
index 447a91b9ac380..51593091b5fa6 100644 index 447a91b9ac380..cf5ad1b907977 100644
--- chrome/browser/file_select_helper.cc --- chrome/browser/file_select_helper.cc
+++ chrome/browser/file_select_helper.cc +++ chrome/browser/file_select_helper.cc
@@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
@ -10,11 +10,15 @@ index 447a91b9ac380..51593091b5fa6 100644
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/enterprise/connectors/common.h" #include "chrome/browser/enterprise/connectors/common.h"
#include "chrome/browser/platform_util.h" #include "chrome/browser/platform_util.h"
@@ -245,6 +246,13 @@ void FileSelectHelper::OnListFile( @@ -245,6 +246,17 @@ void FileSelectHelper::OnListFile(
void FileSelectHelper::LaunchConfirmationDialog( void FileSelectHelper::LaunchConfirmationDialog(
const base::FilePath& path, const base::FilePath& path,
std::vector<ui::SelectedFileInfo> selected_files) { std::vector<ui::SelectedFileInfo> selected_files) {
+ if (cef::IsAlloyRuntimeEnabled() || run_from_cef_) { + if (
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ cef::IsAlloyRuntimeEnabled() ||
+#endif
+ run_from_cef_) {
+ // Don't show the upload confirmation dialog with the Alloy runtime, or + // Don't show the upload confirmation dialog with the Alloy runtime, or
+ // when triggered via CEF (initially or recursively). + // when triggered via CEF (initially or recursively).
+ ConvertToFileChooserFileInfoList(selected_files); + ConvertToFileChooserFileInfoList(selected_files);
@ -24,20 +28,22 @@ index 447a91b9ac380..51593091b5fa6 100644
ShowFolderUploadConfirmationDialog( ShowFolderUploadConfirmationDialog(
path, path,
base::BindOnce(&FileSelectHelper::ConvertToFileChooserFileInfoList, this), base::BindOnce(&FileSelectHelper::ConvertToFileChooserFileInfoList, this),
@@ -329,6 +337,12 @@ void FileSelectHelper::PerformContentAnalysisIfNeeded( @@ -329,6 +341,14 @@ void FileSelectHelper::PerformContentAnalysisIfNeeded(
if (AbortIfWebContentsDestroyed()) if (AbortIfWebContentsDestroyed())
return; return;
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ // Don't trigger creation of a AccountConsistencyModeManager (see issue #3401) + // Don't trigger creation of a AccountConsistencyModeManager (see issue #3401)
+ if (cef::IsAlloyRuntimeEnabled()) { + if (cef::IsAlloyRuntimeEnabled()) {
+ NotifyListenerAndEnd(std::move(list)); + NotifyListenerAndEnd(std::move(list));
+ return; + return;
+ } + }
+#endif
+ +
#if BUILDFLAG(ENTERPRISE_CLOUD_CONTENT_ANALYSIS) #if BUILDFLAG(ENTERPRISE_CLOUD_CONTENT_ANALYSIS)
enterprise_connectors::ContentAnalysisDelegate::Data data; enterprise_connectors::ContentAnalysisDelegate::Data data;
if (enterprise_connectors::ContentAnalysisDelegate::IsEnabled( if (enterprise_connectors::ContentAnalysisDelegate::IsEnabled(
@@ -459,7 +473,8 @@ void FileSelectHelper::DontAbortOnMissingWebContentsForTesting() { @@ -459,7 +479,8 @@ void FileSelectHelper::DontAbortOnMissingWebContentsForTesting() {
std::unique_ptr<ui::SelectFileDialog::FileTypeInfo> std::unique_ptr<ui::SelectFileDialog::FileTypeInfo>
FileSelectHelper::GetFileTypesFromAcceptType( FileSelectHelper::GetFileTypesFromAcceptType(
@ -47,7 +53,7 @@ index 447a91b9ac380..51593091b5fa6 100644
auto base_file_type = std::make_unique<ui::SelectFileDialog::FileTypeInfo>(); auto base_file_type = std::make_unique<ui::SelectFileDialog::FileTypeInfo>();
if (accept_types.empty()) if (accept_types.empty())
return base_file_type; return base_file_type;
@@ -472,17 +487,24 @@ FileSelectHelper::GetFileTypesFromAcceptType( @@ -472,17 +493,24 @@ FileSelectHelper::GetFileTypesFromAcceptType(
std::vector<base::FilePath::StringType>* extensions = std::vector<base::FilePath::StringType>* extensions =
&file_type->extensions.back(); &file_type->extensions.back();
@ -73,7 +79,7 @@ index 447a91b9ac380..51593091b5fa6 100644
} else { } else {
if (!base::IsStringASCII(accept_type)) if (!base::IsStringASCII(accept_type))
continue; continue;
@@ -493,10 +515,18 @@ FileSelectHelper::GetFileTypesFromAcceptType( @@ -493,10 +521,18 @@ FileSelectHelper::GetFileTypesFromAcceptType(
description_id = IDS_AUDIO_FILES; description_id = IDS_AUDIO_FILES;
else if (ascii_type == "video/*") else if (ascii_type == "video/*")
description_id = IDS_VIDEO_FILES; description_id = IDS_VIDEO_FILES;
@ -94,7 +100,7 @@ index 447a91b9ac380..51593091b5fa6 100644
if (extensions->size() > old_extension_size) if (extensions->size() > old_extension_size)
valid_type_count++; valid_type_count++;
} }
@@ -521,6 +551,15 @@ FileSelectHelper::GetFileTypesFromAcceptType( @@ -521,6 +557,15 @@ FileSelectHelper::GetFileTypesFromAcceptType(
l10n_util::GetStringUTF16(description_id)); l10n_util::GetStringUTF16(description_id));
} }
@ -110,7 +116,7 @@ index 447a91b9ac380..51593091b5fa6 100644
return file_type; return file_type;
} }
@@ -528,7 +567,8 @@ FileSelectHelper::GetFileTypesFromAcceptType( @@ -528,7 +573,8 @@ FileSelectHelper::GetFileTypesFromAcceptType(
void FileSelectHelper::RunFileChooser( void FileSelectHelper::RunFileChooser(
content::RenderFrameHost* render_frame_host, content::RenderFrameHost* render_frame_host,
scoped_refptr<content::FileSelectListener> listener, scoped_refptr<content::FileSelectListener> listener,
@ -120,7 +126,7 @@ index 447a91b9ac380..51593091b5fa6 100644
Profile* profile = Profile::FromBrowserContext( Profile* profile = Profile::FromBrowserContext(
render_frame_host->GetProcess()->GetBrowserContext()); render_frame_host->GetProcess()->GetBrowserContext());
@@ -547,6 +587,7 @@ void FileSelectHelper::RunFileChooser( @@ -547,6 +593,7 @@ void FileSelectHelper::RunFileChooser(
// message. // message.
scoped_refptr<FileSelectHelper> file_select_helper( scoped_refptr<FileSelectHelper> file_select_helper(
new FileSelectHelper(profile)); new FileSelectHelper(profile));
@ -128,7 +134,7 @@ index 447a91b9ac380..51593091b5fa6 100644
file_select_helper->RunFileChooser(render_frame_host, std::move(listener), file_select_helper->RunFileChooser(render_frame_host, std::move(listener),
params.Clone()); params.Clone());
} }
@@ -598,7 +639,8 @@ void FileSelectHelper::RunFileChooser( @@ -598,7 +645,8 @@ void FileSelectHelper::RunFileChooser(
} }
void FileSelectHelper::GetFileTypesInThreadPool(FileChooserParamsPtr params) { void FileSelectHelper::GetFileTypesInThreadPool(FileChooserParamsPtr params) {

View File

@ -85,7 +85,7 @@ index e2cf12d2c8fee..376818e28798c 100644
}; };
diff --git chrome/browser/download/download_prefs.cc chrome/browser/download/download_prefs.cc diff --git chrome/browser/download/download_prefs.cc chrome/browser/download/download_prefs.cc
index 773f72da82f90..6d0307988406f 100644 index 773f72da82f90..0043dd530934d 100644
--- chrome/browser/download/download_prefs.cc --- chrome/browser/download/download_prefs.cc
+++ chrome/browser/download/download_prefs.cc +++ chrome/browser/download/download_prefs.cc
@@ -23,6 +23,7 @@ @@ -23,6 +23,7 @@
@ -100,7 +100,7 @@ index 773f72da82f90..6d0307988406f 100644
#include "chrome/browser/flags/android/chrome_feature_list.h" #include "chrome/browser/flags/android/chrome_feature_list.h"
#endif #endif
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+#include "cef/libcef/browser/alloy/alloy_download_util.h" +#include "cef/libcef/browser/alloy/alloy_download_util.h"
+#endif +#endif
+ +
@ -111,7 +111,7 @@ index 773f72da82f90..6d0307988406f 100644
// static // static
DownloadPrefs* DownloadPrefs::FromBrowserContext( DownloadPrefs* DownloadPrefs::FromBrowserContext(
content::BrowserContext* context) { content::BrowserContext* context) {
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (cef::IsAlloyRuntimeEnabled()) { + if (cef::IsAlloyRuntimeEnabled()) {
+ return alloy::GetDownloadPrefsFromBrowserContext(context); + return alloy::GetDownloadPrefsFromBrowserContext(context);
+ } + }

View File

@ -1,5 +1,5 @@
diff --git chrome/browser/net/proxy_config_monitor.cc chrome/browser/net/proxy_config_monitor.cc diff --git chrome/browser/net/proxy_config_monitor.cc chrome/browser/net/proxy_config_monitor.cc
index c9281f7abfbde..a1b7c77475b54 100644 index c9281f7abfbde..670872e610d88 100644
--- chrome/browser/net/proxy_config_monitor.cc --- chrome/browser/net/proxy_config_monitor.cc
+++ chrome/browser/net/proxy_config_monitor.cc +++ chrome/browser/net/proxy_config_monitor.cc
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
@ -14,7 +14,7 @@ index c9281f7abfbde..a1b7c77475b54 100644
#include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/ash/profiles/profile_helper.h"
#endif // BUILDFLAG(IS_CHROMEOS_ASH) #endif // BUILDFLAG(IS_CHROMEOS_ASH)
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+#include "cef/libcef/common/extensions/extensions_util.h" +#include "cef/libcef/common/extensions/extensions_util.h"
+#endif +#endif
+ +
@ -25,7 +25,7 @@ index c9281f7abfbde..a1b7c77475b54 100644
} }
#if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(ENABLE_EXTENSIONS)
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled() || extensions::ExtensionsEnabled()) + if (!cef::IsAlloyRuntimeEnabled() || extensions::ExtensionsEnabled())
+#endif +#endif
error_receiver_set_.Add(this, network_context_params->proxy_error_client error_receiver_set_.Add(this, network_context_params->proxy_error_client

View File

@ -1,5 +1,5 @@
diff --git chrome/browser/background_fetch/background_fetch_permission_context.cc chrome/browser/background_fetch/background_fetch_permission_context.cc diff --git chrome/browser/background_fetch/background_fetch_permission_context.cc chrome/browser/background_fetch/background_fetch_permission_context.cc
index 429739d7b8dfe..0f4bff365f62b 100644 index 429739d7b8dfe..726cc7d9e9ced 100644
--- chrome/browser/background_fetch/background_fetch_permission_context.cc --- chrome/browser/background_fetch/background_fetch_permission_context.cc
+++ chrome/browser/background_fetch/background_fetch_permission_context.cc +++ chrome/browser/background_fetch/background_fetch_permission_context.cc
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
@ -10,18 +10,21 @@ index 429739d7b8dfe..0f4bff365f62b 100644
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/download/download_request_limiter.h" #include "chrome/browser/download/download_request_limiter.h"
@@ -25,7 +26,8 @@ ContentSetting BackgroundFetchPermissionContext::GetPermissionStatusInternal( @@ -25,7 +26,11 @@ ContentSetting BackgroundFetchPermissionContext::GetPermissionStatusInternal(
const GURL& embedding_origin) const { const GURL& embedding_origin) const {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- if (render_frame_host && !render_frame_host->GetParent()) { - if (render_frame_host && !render_frame_host->GetParent()) {
+ if (!cef::IsAlloyRuntimeEnabled() && + if (
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ !cef::IsAlloyRuntimeEnabled() &&
+#endif
+ render_frame_host && !render_frame_host->GetParent()) { + render_frame_host && !render_frame_host->GetParent()) {
DownloadRequestLimiter* limiter = DownloadRequestLimiter* limiter =
g_browser_process->download_request_limiter(); g_browser_process->download_request_limiter();
DCHECK(limiter); DCHECK(limiter);
diff --git chrome/browser/background_sync/periodic_background_sync_permission_context.cc chrome/browser/background_sync/periodic_background_sync_permission_context.cc diff --git chrome/browser/background_sync/periodic_background_sync_permission_context.cc chrome/browser/background_sync/periodic_background_sync_permission_context.cc
index d63a055919747..8d13959217751 100644 index d63a055919747..49adba291f1bb 100644
--- chrome/browser/background_sync/periodic_background_sync_permission_context.cc --- chrome/browser/background_sync/periodic_background_sync_permission_context.cc
+++ chrome/browser/background_sync/periodic_background_sync_permission_context.cc +++ chrome/browser/background_sync/periodic_background_sync_permission_context.cc
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
@ -32,19 +35,21 @@ index d63a055919747..8d13959217751 100644
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/search_engines/template_url_service_factory.h" #include "chrome/browser/search_engines/template_url_service_factory.h"
@@ -89,6 +90,10 @@ PeriodicBackgroundSyncPermissionContext::GetPermissionStatusInternal( @@ -89,6 +90,12 @@ PeriodicBackgroundSyncPermissionContext::GetPermissionStatusInternal(
return CONTENT_SETTING_ALLOW; return CONTENT_SETTING_ALLOW;
#endif #endif
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (cef::IsAlloyRuntimeEnabled()) { + if (cef::IsAlloyRuntimeEnabled()) {
+ return CONTENT_SETTING_BLOCK; + return CONTENT_SETTING_BLOCK;
+ } + }
+#endif
+ +
bool can_bypass_install_requirement = bool can_bypass_install_requirement =
base::FeatureList::IsEnabled( base::FeatureList::IsEnabled(
features::kPeriodicSyncPermissionForDefaultSearchEngine) && features::kPeriodicSyncPermissionForDefaultSearchEngine) &&
diff --git chrome/browser/permissions/chrome_permissions_client.cc chrome/browser/permissions/chrome_permissions_client.cc diff --git chrome/browser/permissions/chrome_permissions_client.cc chrome/browser/permissions/chrome_permissions_client.cc
index 7f14b48feedf6..cfcf4554c1d4d 100644 index 7f14b48feedf6..9679552640788 100644
--- chrome/browser/permissions/chrome_permissions_client.cc --- chrome/browser/permissions/chrome_permissions_client.cc
+++ chrome/browser/permissions/chrome_permissions_client.cc +++ chrome/browser/permissions/chrome_permissions_client.cc
@@ -14,6 +14,7 @@ @@ -14,6 +14,7 @@
@ -55,29 +60,35 @@ index 7f14b48feedf6..cfcf4554c1d4d 100644
#include "chrome/browser/ash/shimless_rma/chrome_shimless_rma_delegate.h" #include "chrome/browser/ash/shimless_rma/chrome_shimless_rma_delegate.h"
#include "chrome/browser/bluetooth/bluetooth_chooser_context_factory.h" #include "chrome/browser/bluetooth/bluetooth_chooser_context_factory.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
@@ -190,6 +191,9 @@ ChromePermissionsClient::GetPermissionDecisionAutoBlocker( @@ -190,6 +191,11 @@ ChromePermissionsClient::GetPermissionDecisionAutoBlocker(
double ChromePermissionsClient::GetSiteEngagementScore( double ChromePermissionsClient::GetSiteEngagementScore(
content::BrowserContext* browser_context, content::BrowserContext* browser_context,
const GURL& origin) { const GURL& origin) {
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ // No SiteEngagementService with the Alloy runtime. + // No SiteEngagementService with the Alloy runtime.
+ if (cef::IsAlloyRuntimeEnabled()) + if (cef::IsAlloyRuntimeEnabled())
+ return 0.0; + return 0.0;
+#endif
return site_engagement::SiteEngagementService::Get( return site_engagement::SiteEngagementService::Get(
Profile::FromBrowserContext(browser_context)) Profile::FromBrowserContext(browser_context))
->GetScore(origin); ->GetScore(origin);
@@ -360,8 +364,10 @@ ChromePermissionsClient::CreatePermissionUiSelectors( @@ -360,8 +366,14 @@ ChromePermissionsClient::CreatePermissionUiSelectors(
std::make_unique<ContextualNotificationPermissionUiSelector>()); std::make_unique<ContextualNotificationPermissionUiSelector>());
selectors.emplace_back(std::make_unique<PrefBasedQuietPermissionUiSelector>( selectors.emplace_back(std::make_unique<PrefBasedQuietPermissionUiSelector>(
Profile::FromBrowserContext(browser_context))); Profile::FromBrowserContext(browser_context)));
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled()) { + if (!cef::IsAlloyRuntimeEnabled()) {
+#endif
selectors.emplace_back(std::make_unique<PredictionBasedPermissionUiSelector>( selectors.emplace_back(std::make_unique<PredictionBasedPermissionUiSelector>(
Profile::FromBrowserContext(browser_context))); Profile::FromBrowserContext(browser_context)));
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif
return selectors; return selectors;
} }
diff --git chrome/browser/permissions/permission_manager_factory.cc chrome/browser/permissions/permission_manager_factory.cc diff --git chrome/browser/permissions/permission_manager_factory.cc chrome/browser/permissions/permission_manager_factory.cc
index 1ad4009827a9d..ca054482954f9 100644 index 1ad4009827a9d..6aba08191cf35 100644
--- chrome/browser/permissions/permission_manager_factory.cc --- chrome/browser/permissions/permission_manager_factory.cc
+++ chrome/browser/permissions/permission_manager_factory.cc +++ chrome/browser/permissions/permission_manager_factory.cc
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
@ -88,20 +99,24 @@ index 1ad4009827a9d..ca054482954f9 100644
#include "chrome/browser/background_fetch/background_fetch_permission_context.h" #include "chrome/browser/background_fetch/background_fetch_permission_context.h"
#include "chrome/browser/background_sync/periodic_background_sync_permission_context.h" #include "chrome/browser/background_sync/periodic_background_sync_permission_context.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
@@ -64,9 +65,11 @@ permissions::PermissionManager::PermissionContextMap CreatePermissionContexts( @@ -64,9 +65,15 @@ permissions::PermissionManager::PermissionContextMap CreatePermissionContexts(
std::make_unique<GeolocationPermissionContextDelegate>(profile); std::make_unique<GeolocationPermissionContextDelegate>(profile);
#endif // BUILDFLAG(IS_ANDROID) #endif // BUILDFLAG(IS_ANDROID)
#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled()) { + if (!cef::IsAlloyRuntimeEnabled()) {
+#endif
delegates.geolocation_system_permission_manager = delegates.geolocation_system_permission_manager =
device::GeolocationSystemPermissionManager::GetInstance(); device::GeolocationSystemPermissionManager::GetInstance();
DCHECK(delegates.geolocation_system_permission_manager); DCHECK(delegates.geolocation_system_permission_manager);
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif
#endif #endif
delegates.media_stream_device_enumerator = delegates.media_stream_device_enumerator =
MediaCaptureDevicesDispatcher::GetInstance(); MediaCaptureDevicesDispatcher::GetInstance();
diff --git chrome/browser/storage/durable_storage_permission_context.cc chrome/browser/storage/durable_storage_permission_context.cc diff --git chrome/browser/storage/durable_storage_permission_context.cc chrome/browser/storage/durable_storage_permission_context.cc
index 9934727f31a59..765b822241e4d 100644 index 9934727f31a59..9ab13938d39c2 100644
--- chrome/browser/storage/durable_storage_permission_context.cc --- chrome/browser/storage/durable_storage_permission_context.cc
+++ chrome/browser/storage/durable_storage_permission_context.cc +++ chrome/browser/storage/durable_storage_permission_context.cc
@@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
@ -112,14 +127,17 @@ index 9934727f31a59..765b822241e4d 100644
#include "chrome/browser/bookmarks/bookmark_model_factory.h" #include "chrome/browser/bookmarks/bookmark_model_factory.h"
#include "chrome/browser/content_settings/cookie_settings_factory.h" #include "chrome/browser/content_settings/cookie_settings_factory.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
@@ -56,7 +57,10 @@ void DurableStoragePermissionContext::DecidePermission( @@ -56,7 +57,13 @@ void DurableStoragePermissionContext::DecidePermission(
// Durable is only allowed to be granted to the top-level origin. Embedding // Durable is only allowed to be granted to the top-level origin. Embedding
// origin is the last committed navigation origin to the web contents. // origin is the last committed navigation origin to the web contents.
- if (request_data.requesting_origin != request_data.embedding_origin) { - if (request_data.requesting_origin != request_data.embedding_origin) {
+ // Permission depends on PWA and site engagement subsystems which are not + // Permission depends on PWA and site engagement subsystems which are not
+ // supported by the Alloy runtime (see issue #3379). + // supported by the Alloy runtime (see issue #3379).
+ if (cef::IsAlloyRuntimeEnabled() || + if (
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ cef::IsAlloyRuntimeEnabled() ||
+#endif
+ request_data.requesting_origin != request_data.embedding_origin) { + request_data.requesting_origin != request_data.embedding_origin) {
NotifyPermissionSet(request_data.id, request_data.requesting_origin, NotifyPermissionSet(request_data.id, request_data.requesting_origin,
request_data.embedding_origin, std::move(callback), request_data.embedding_origin, std::move(callback),
@ -176,7 +194,7 @@ index 613500ba8c3d3..36c9aa0d2ea71 100644
if (!browser) { if (!browser) {
DLOG(WARNING) << "Permission prompt suppressed because the WebContents is " DLOG(WARNING) << "Permission prompt suppressed because the WebContents is "
diff --git components/embedder_support/permission_context_utils.cc components/embedder_support/permission_context_utils.cc diff --git components/embedder_support/permission_context_utils.cc components/embedder_support/permission_context_utils.cc
index 9c0ec651d494f..e5c6126adeea7 100644 index 9c0ec651d494f..8ba6512557edc 100644
--- components/embedder_support/permission_context_utils.cc --- components/embedder_support/permission_context_utils.cc
+++ components/embedder_support/permission_context_utils.cc +++ components/embedder_support/permission_context_utils.cc
@@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
@ -187,21 +205,25 @@ index 9c0ec651d494f..e5c6126adeea7 100644
#include "components/background_sync/background_sync_permission_context.h" #include "components/background_sync/background_sync_permission_context.h"
#include "components/permissions/contexts/accessibility_permission_context.h" #include "components/permissions/contexts/accessibility_permission_context.h"
#include "components/permissions/contexts/camera_pan_tilt_zoom_permission_context.h" #include "components/permissions/contexts/camera_pan_tilt_zoom_permission_context.h"
@@ -79,10 +80,17 @@ CreateDefaultPermissionContexts(content::BrowserContext* browser_context, @@ -79,10 +80,21 @@ CreateDefaultPermissionContexts(content::BrowserContext* browser_context,
std::move(delegates.geolocation_permission_context_delegate), std::move(delegates.geolocation_permission_context_delegate),
is_regular_profile); is_regular_profile);
#elif BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) #elif BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS)
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (cef::IsAlloyRuntimeEnabled()) { + if (cef::IsAlloyRuntimeEnabled()) {
+ permission_contexts[ContentSettingsType::GEOLOCATION] = + permission_contexts[ContentSettingsType::GEOLOCATION] =
+ std::make_unique<permissions::GeolocationPermissionContext>( + std::make_unique<permissions::GeolocationPermissionContext>(
+ browser_context, + browser_context,
+ std::move(delegates.geolocation_permission_context_delegate)); + std::move(delegates.geolocation_permission_context_delegate));
+ } else { + } else {
+#endif
permission_contexts[ContentSettingsType::GEOLOCATION] = permission_contexts[ContentSettingsType::GEOLOCATION] =
std::make_unique<permissions::GeolocationPermissionContextSystem>( std::make_unique<permissions::GeolocationPermissionContextSystem>(
browser_context, browser_context,
std::move(delegates.geolocation_permission_context_delegate)); std::move(delegates.geolocation_permission_context_delegate));
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif
#else #else
permission_contexts[ContentSettingsType::GEOLOCATION] = permission_contexts[ContentSettingsType::GEOLOCATION] =
std::make_unique<permissions::GeolocationPermissionContext>( std::make_unique<permissions::GeolocationPermissionContext>(

View File

@ -134,7 +134,7 @@ index 3d5fd0d5ca858..965ab69b3fe8f 100644
// Returns the directory where the first created profile is stored, // Returns the directory where the first created profile is stored,
// relative to the user data directory currently in use. // relative to the user data directory currently in use.
diff --git chrome/browser/profiles/renderer_updater.cc chrome/browser/profiles/renderer_updater.cc diff --git chrome/browser/profiles/renderer_updater.cc chrome/browser/profiles/renderer_updater.cc
index 0d1d2e3661ff1..a97322b1d991d 100644 index 0d1d2e3661ff1..ba4b8cb233102 100644
--- chrome/browser/profiles/renderer_updater.cc --- chrome/browser/profiles/renderer_updater.cc
+++ chrome/browser/profiles/renderer_updater.cc +++ chrome/browser/profiles/renderer_updater.cc
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
@ -145,16 +145,18 @@ index 0d1d2e3661ff1..a97322b1d991d 100644
#include "chrome/browser/content_settings/content_settings_manager_delegate.h" #include "chrome/browser/content_settings/content_settings_manager_delegate.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
@@ -45,6 +46,7 @@ RendererUpdater::RendererUpdater(Profile* profile) @@ -45,6 +46,9 @@ RendererUpdater::RendererUpdater(Profile* profile)
#if BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS) #if BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS)
, ,
bound_session_cookie_refresh_service_( bound_session_cookie_refresh_service_(
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ cef::IsAlloyRuntimeEnabled() ? nullptr : + cef::IsAlloyRuntimeEnabled() ? nullptr :
+#endif
BoundSessionCookieRefreshServiceFactory::GetForProfile(profile)) BoundSessionCookieRefreshServiceFactory::GetForProfile(profile))
#endif #endif
{ {
diff --git chrome/browser/profiles/renderer_updater_factory.cc chrome/browser/profiles/renderer_updater_factory.cc diff --git chrome/browser/profiles/renderer_updater_factory.cc chrome/browser/profiles/renderer_updater_factory.cc
index ed5b366aa47ab..58ebe795e4636 100644 index ed5b366aa47ab..794cf8b3bbec1 100644
--- chrome/browser/profiles/renderer_updater_factory.cc --- chrome/browser/profiles/renderer_updater_factory.cc
+++ chrome/browser/profiles/renderer_updater_factory.cc +++ chrome/browser/profiles/renderer_updater_factory.cc
@@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
@ -165,13 +167,17 @@ index ed5b366aa47ab..58ebe795e4636 100644
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/renderer_updater.h" #include "chrome/browser/profiles/renderer_updater.h"
@@ -25,7 +26,9 @@ RendererUpdaterFactory::RendererUpdaterFactory() @@ -25,7 +26,13 @@ RendererUpdaterFactory::RendererUpdaterFactory()
DependsOn(IdentityManagerFactory::GetInstance()); DependsOn(IdentityManagerFactory::GetInstance());
DependsOn(HostContentSettingsMapFactory::GetInstance()); DependsOn(HostContentSettingsMapFactory::GetInstance());
#if BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS) #if BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS)
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled()) { + if (!cef::IsAlloyRuntimeEnabled()) {
+#endif
DependsOn(BoundSessionCookieRefreshServiceFactory::GetInstance()); DependsOn(BoundSessionCookieRefreshServiceFactory::GetInstance());
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif
#endif // BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS) #endif // BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS)
} }

View File

@ -1,5 +1,5 @@
diff --git chrome/browser/themes/theme_service.cc chrome/browser/themes/theme_service.cc diff --git chrome/browser/themes/theme_service.cc chrome/browser/themes/theme_service.cc
index 0b39e73c2a394..23b0bdcb7b7db 100644 index 0b39e73c2a394..1c42fe06479ab 100644
--- chrome/browser/themes/theme_service.cc --- chrome/browser/themes/theme_service.cc
+++ chrome/browser/themes/theme_service.cc +++ chrome/browser/themes/theme_service.cc
@@ -30,6 +30,7 @@ @@ -30,6 +30,7 @@
@ -25,7 +25,7 @@ index 0b39e73c2a394..23b0bdcb7b7db 100644
// OnExtensionServiceReady. Otherwise, the ThemeObserver won't be // OnExtensionServiceReady. Otherwise, the ThemeObserver won't be
// constructed in time to observe the corresponding events. // constructed in time to observe the corresponding events.
#if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(ENABLE_EXTENSIONS)
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ const bool extensions_disabled = cef::IsAlloyRuntimeEnabled() && + const bool extensions_disabled = cef::IsAlloyRuntimeEnabled() &&
+ !extensions::ExtensionsEnabled(); + !extensions::ExtensionsEnabled();
+#else +#else
@ -42,7 +42,7 @@ index 0b39e73c2a394..23b0bdcb7b7db 100644
theme_syncable_service_ = theme_syncable_service_ =
std::make_unique<ThemeSyncableService>(profile_, this); std::make_unique<ThemeSyncableService>(profile_, this);
diff --git chrome/browser/themes/theme_service_factory.cc chrome/browser/themes/theme_service_factory.cc diff --git chrome/browser/themes/theme_service_factory.cc chrome/browser/themes/theme_service_factory.cc
index 879bbeef4037b..e6cc36f388197 100644 index 879bbeef4037b..c52b9144cf966 100644
--- chrome/browser/themes/theme_service_factory.cc --- chrome/browser/themes/theme_service_factory.cc
+++ chrome/browser/themes/theme_service_factory.cc +++ chrome/browser/themes/theme_service_factory.cc
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
@ -68,7 +68,7 @@ index 879bbeef4037b..e6cc36f388197 100644
.Build()) { .Build()) {
DependsOn(extensions::ExtensionRegistryFactory::GetInstance()); DependsOn(extensions::ExtensionRegistryFactory::GetInstance());
DependsOn(extensions::ExtensionPrefsFactory::GetInstance()); DependsOn(extensions::ExtensionPrefsFactory::GetInstance());
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ const bool extensions_disabled = cef::IsAlloyRuntimeEnabled() && + const bool extensions_disabled = cef::IsAlloyRuntimeEnabled() &&
+ !extensions::ExtensionsEnabled(); + !extensions::ExtensionsEnabled();
+#else +#else

View File

@ -1,43 +1,65 @@
diff --git chrome/browser/plugins/plugin_info_host_impl.cc chrome/browser/plugins/plugin_info_host_impl.cc diff --git chrome/browser/plugins/plugin_info_host_impl.cc chrome/browser/plugins/plugin_info_host_impl.cc
index 2bb525046619c..611fa1fb57369 100644 index 2bb525046619c..200fc9c1f0067 100644
--- chrome/browser/plugins/plugin_info_host_impl.cc --- chrome/browser/plugins/plugin_info_host_impl.cc
+++ chrome/browser/plugins/plugin_info_host_impl.cc +++ chrome/browser/plugins/plugin_info_host_impl.cc
@@ -140,6 +140,10 @@ bool IsPluginLoadingAccessibleResourceInWebView( @@ -16,6 +16,7 @@
#include "base/memory/singleton.h"
#include "build/branding_buildflags.h"
#include "build/build_config.h"
+#include "cef/libcef/features/features.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
#include "chrome/browser/plugins/chrome_plugin_service_filter.h"
@@ -140,6 +141,12 @@ bool IsPluginLoadingAccessibleResourceInWebView(
extensions::ExtensionRegistry* extension_registry, extensions::ExtensionRegistry* extension_registry,
int process_id, int process_id,
const GURL& resource) { const GURL& resource) {
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ // May be nullptr if using CEF Alloy with extensions disabled. + // May be nullptr if using CEF Alloy with extensions disabled.
+ if (!extension_registry) + if (!extension_registry)
+ return false; + return false;
+#endif
+ +
extensions::WebViewRendererState* renderer_state = extensions::WebViewRendererState* renderer_state =
extensions::WebViewRendererState::GetInstance(); extensions::WebViewRendererState::GetInstance();
std::string partition_id; std::string partition_id;
diff --git chrome/browser/plugins/plugin_utils.cc chrome/browser/plugins/plugin_utils.cc diff --git chrome/browser/plugins/plugin_utils.cc chrome/browser/plugins/plugin_utils.cc
index 438276b719c2f..69635e429be78 100644 index 438276b719c2f..e97fa0eaf2d7a 100644
--- chrome/browser/plugins/plugin_utils.cc --- chrome/browser/plugins/plugin_utils.cc
+++ chrome/browser/plugins/plugin_utils.cc +++ chrome/browser/plugins/plugin_utils.cc
@@ -68,6 +68,13 @@ PluginUtils::GetMimeTypeToExtensionIdMap( @@ -5,6 +5,7 @@
#include "chrome/browser/plugins/plugin_utils.h"
#include "base/values.h"
+#include "cef/libcef/features/features.h"
#include "chrome/browser/profiles/profile.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "components/content_settings/core/common/content_settings_types.h"
@@ -68,6 +69,15 @@ PluginUtils::GetMimeTypeToExtensionIdMap(
content::BrowserContext* browser_context) { content::BrowserContext* browser_context) {
base::flat_map<std::string, std::string> mime_type_to_extension_id_map; base::flat_map<std::string, std::string> mime_type_to_extension_id_map;
#if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(ENABLE_EXTENSIONS)
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ // May be nullptr if using CEF Alloy with extensions disabled. + // May be nullptr if using CEF Alloy with extensions disabled.
+ extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry* registry =
+ extensions::ExtensionRegistry::Get(browser_context); + extensions::ExtensionRegistry::Get(browser_context);
+ if (!registry) { + if (!registry) {
+ return mime_type_to_extension_id_map; + return mime_type_to_extension_id_map;
+ } + }
+#endif
+ +
Profile* profile = Profile::FromBrowserContext(browser_context); Profile* profile = Profile::FromBrowserContext(browser_context);
if (extensions::ChromeContentBrowserClientExtensionsPart:: if (extensions::ChromeContentBrowserClientExtensionsPart::
AreExtensionsDisabledForProfile(profile)) { AreExtensionsDisabledForProfile(profile)) {
@@ -78,9 +85,6 @@ PluginUtils::GetMimeTypeToExtensionIdMap( @@ -78,9 +88,11 @@ PluginUtils::GetMimeTypeToExtensionIdMap(
MimeTypesHandler::GetMIMETypeAllowlist(); MimeTypesHandler::GetMIMETypeAllowlist();
// Go through the allowed extensions and try to use them to intercept // Go through the allowed extensions and try to use them to intercept
// the URL request. // the URL request.
- extensions::ExtensionRegistry* registry = +#if !BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
- extensions::ExtensionRegistry::Get(browser_context); extensions::ExtensionRegistry* registry =
- DCHECK(registry); extensions::ExtensionRegistry::Get(browser_context);
DCHECK(registry);
+#endif
for (const std::string& extension_id : allowlist) { for (const std::string& extension_id : allowlist) {
const extensions::Extension* extension = const extensions::Extension* extension =
registry->enabled_extensions().GetByID(extension_id); registry->enabled_extensions().GetByID(extension_id);

View File

@ -1,5 +1,5 @@
diff --git chrome/utility/chrome_content_utility_client.cc chrome/utility/chrome_content_utility_client.cc diff --git chrome/utility/chrome_content_utility_client.cc chrome/utility/chrome_content_utility_client.cc
index c15d1fa6d6e25..b89a663d2664f 100644 index c15d1fa6d6e25..f7356f7c1ef64 100644
--- chrome/utility/chrome_content_utility_client.cc --- chrome/utility/chrome_content_utility_client.cc
+++ chrome/utility/chrome_content_utility_client.cc +++ chrome/utility/chrome_content_utility_client.cc
@@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
@ -10,13 +10,16 @@ index c15d1fa6d6e25..b89a663d2664f 100644
#include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_paths.h"
#include "chrome/common/profiler/thread_profiler.h" #include "chrome/common/profiler/thread_profiler.h"
#include "chrome/common/profiler/thread_profiler_configuration.h" #include "chrome/common/profiler/thread_profiler_configuration.h"
@@ -54,7 +55,8 @@ void ChromeContentUtilityClient::UtilityThreadStarted() { @@ -54,7 +55,11 @@ void ChromeContentUtilityClient::UtilityThreadStarted() {
command_line->GetSwitchValueASCII(switches::kProcessType); command_line->GetSwitchValueASCII(switches::kProcessType);
// An in-process utility thread may run in other processes, only set up // An in-process utility thread may run in other processes, only set up
// collector in a utility process. // collector in a utility process.
- if (process_type == switches::kUtilityProcess) { - if (process_type == switches::kUtilityProcess) {
+ if (process_type == switches::kUtilityProcess && + if (process_type == switches::kUtilityProcess
+ !cef::IsAlloyRuntimeEnabled()) { +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ && !cef::IsAlloyRuntimeEnabled()
+#endif
+ ) {
// The HeapProfilerController should have been created in // The HeapProfilerController should have been created in
// ChromeMainDelegate::PostEarlyInitialization. // ChromeMainDelegate::PostEarlyInitialization.
using HeapProfilerController = heap_profiling::HeapProfilerController; using HeapProfilerController = heap_profiling::HeapProfilerController;

View File

@ -1,5 +1,5 @@
diff --git chrome/browser/extensions/api/streams_private/streams_private_api.cc chrome/browser/extensions/api/streams_private/streams_private_api.cc diff --git chrome/browser/extensions/api/streams_private/streams_private_api.cc chrome/browser/extensions/api/streams_private/streams_private_api.cc
index 96a290eef86ca..6513a365cddf0 100644 index 96a290eef86ca..bee0f9eaad71e 100644
--- chrome/browser/extensions/api/streams_private/streams_private_api.cc --- chrome/browser/extensions/api/streams_private/streams_private_api.cc
+++ chrome/browser/extensions/api/streams_private/streams_private_api.cc +++ chrome/browser/extensions/api/streams_private/streams_private_api.cc
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
@ -14,30 +14,34 @@ index 96a290eef86ca..6513a365cddf0 100644
#include "pdf/pdf_features.h" #include "pdf/pdf_features.h"
#endif // BUILDFLAG(ENABLE_PDF) #endif // BUILDFLAG(ENABLE_PDF)
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+#include "cef/libcef/browser/extensions/alloy_extensions_util.h" +#include "cef/libcef/browser/extensions/alloy_extensions_util.h"
+#endif +#endif
+ +
namespace extensions { namespace extensions {
void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent( void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent(
@@ -44,6 +49,7 @@ void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent( @@ -44,6 +49,9 @@ void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent(
if (!web_contents) if (!web_contents)
return; return;
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled()) { + if (!cef::IsAlloyRuntimeEnabled()) {
+#endif
// If the request was for NoStatePrefetch, abort the prefetcher and do not // If the request was for NoStatePrefetch, abort the prefetcher and do not
// continue. This is because plugins cancel NoStatePrefetch, see // continue. This is because plugins cancel NoStatePrefetch, see
// http://crbug.com/343590. // http://crbug.com/343590.
@@ -54,6 +60,7 @@ void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent( @@ -54,6 +62,9 @@ void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent(
no_state_prefetch_contents->Destroy(prerender::FINAL_STATUS_DOWNLOAD); no_state_prefetch_contents->Destroy(prerender::FINAL_STATUS_DOWNLOAD);
return; return;
} }
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif
auto* browser_context = web_contents->GetBrowserContext(); auto* browser_context = web_contents->GetBrowserContext();
@@ -80,9 +87,18 @@ void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent( @@ -80,9 +91,18 @@ void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent(
// forms of zooming won't work). // forms of zooming won't work).
// TODO(crbug.com/40114809): Present a coherent representation of a tab id for // TODO(crbug.com/40114809): Present a coherent representation of a tab id for
// portal contents. // portal contents.
@ -48,11 +52,11 @@ index 96a290eef86ca..6513a365cddf0 100644
+ if (web_contents->GetOuterWebContents()) { + if (web_contents->GetOuterWebContents()) {
+ tab_id = SessionID::InvalidValue().id(); + tab_id = SessionID::InvalidValue().id();
+ } else + } else
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (cef::IsAlloyRuntimeEnabled()) { + if (cef::IsAlloyRuntimeEnabled()) {
+ tab_id = alloy::GetTabIdForWebContents(web_contents); + tab_id = alloy::GetTabIdForWebContents(web_contents);
+ } else + } else
+#endif // BUILDFLAG(ENABLE_CEF) +#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ { + {
+ tab_id = ExtensionTabUtil::GetTabId(web_contents); + tab_id = ExtensionTabUtil::GetTabId(web_contents);
+ } + }
@ -168,7 +172,7 @@ index 28ba09319b047..2a097a5ae4c16 100644
// A pointer to the current or speculative main frame in `host_contents_`. We // A pointer to the current or speculative main frame in `host_contents_`. We
// can't access this frame through the `host_contents_` directly as it does // can't access this frame through the `host_contents_` directly as it does
diff --git extensions/browser/extension_registry.cc extensions/browser/extension_registry.cc diff --git extensions/browser/extension_registry.cc extensions/browser/extension_registry.cc
index c3197eb4790fa..1e7ae767b0582 100644 index c3197eb4790fa..f558ff72bdbac 100644
--- extensions/browser/extension_registry.cc --- extensions/browser/extension_registry.cc
+++ extensions/browser/extension_registry.cc +++ extensions/browser/extension_registry.cc
@@ -6,9 +6,14 @@ @@ -6,9 +6,14 @@
@ -190,7 +194,7 @@ index c3197eb4790fa..1e7ae767b0582 100644
// static // static
ExtensionRegistry* ExtensionRegistry::Get(content::BrowserContext* context) { ExtensionRegistry* ExtensionRegistry::Get(content::BrowserContext* context) {
+#if BUILDFLAG(ENABLE_CEF) +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (cef::IsAlloyRuntimeEnabled() && !extensions::ExtensionsEnabled()) { + if (cef::IsAlloyRuntimeEnabled() && !extensions::ExtensionsEnabled()) {
+ return nullptr; + return nullptr;
+ } + }
@ -257,15 +261,25 @@ index b86a71429eb33..9f7d190975605 100644
base::BindOnce(&ProcessManager::HandleCloseExtensionHost, base::BindOnce(&ProcessManager::HandleCloseExtensionHost,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
diff --git extensions/common/extensions_client.cc extensions/common/extensions_client.cc diff --git extensions/common/extensions_client.cc extensions/common/extensions_client.cc
index 5142f341b8392..d3242aae96ece 100644 index 5142f341b8392..0589a1f1466f5 100644
--- extensions/common/extensions_client.cc --- extensions/common/extensions_client.cc
+++ extensions/common/extensions_client.cc +++ extensions/common/extensions_client.cc
@@ -25,7 +25,7 @@ ExtensionsClient* g_client = nullptr; @@ -8,6 +8,7 @@
#include "base/check.h"
#include "base/notreached.h"
+#include "cef/libcef/features/features.h"
#include "extensions/common/extension_icon_set.h"
#include "extensions/common/extensions_api_provider.h"
#include "extensions/common/features/feature_provider.h"
@@ -25,7 +26,10 @@ ExtensionsClient* g_client = nullptr;
} // namespace } // namespace
ExtensionsClient* ExtensionsClient::Get() { ExtensionsClient* ExtensionsClient::Get() {
- DCHECK(g_client); +#if !BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ // May be nullptr if using CEF Alloy with extensions disabled. + // May be nullptr if using CEF Alloy with extensions disabled.
DCHECK(g_client);
+#endif
return g_client; return g_client;
} }

View File

@ -24,7 +24,7 @@ index ecabd51db586d..a7ae5e101ca02 100644
Microsoft::WRL::ComPtr<ID3D11Texture2D> d3d11_texture; Microsoft::WRL::ComPtr<ID3D11Texture2D> d3d11_texture;
diff --git media/video/renderable_gpu_memory_buffer_video_frame_pool.cc media/video/renderable_gpu_memory_buffer_video_frame_pool.cc diff --git media/video/renderable_gpu_memory_buffer_video_frame_pool.cc media/video/renderable_gpu_memory_buffer_video_frame_pool.cc
index a7ac0f10f11e5..bb1d7dc6e9168 100644 index a7ac0f10f11e5..bbbfefd486660 100644
--- media/video/renderable_gpu_memory_buffer_video_frame_pool.cc --- media/video/renderable_gpu_memory_buffer_video_frame_pool.cc
+++ media/video/renderable_gpu_memory_buffer_video_frame_pool.cc +++ media/video/renderable_gpu_memory_buffer_video_frame_pool.cc
@@ -198,7 +198,7 @@ gfx::Size GetBufferSizeInPixelsForVideoPixelFormat( @@ -198,7 +198,7 @@ gfx::Size GetBufferSizeInPixelsForVideoPixelFormat(

View File

@ -27,7 +27,7 @@ index 5d1658999d5bb..d1b7b7288c946 100644
$i18n{cancel} $i18n{cancel}
</cr-button> </cr-button>
diff --git chrome/browser/ui/webui/constrained_web_dialog_ui.cc chrome/browser/ui/webui/constrained_web_dialog_ui.cc diff --git chrome/browser/ui/webui/constrained_web_dialog_ui.cc chrome/browser/ui/webui/constrained_web_dialog_ui.cc
index c85248ab0d0a0..05b3454c0356d 100644 index c85248ab0d0a0..1595d2aa62bce 100644
--- chrome/browser/ui/webui/constrained_web_dialog_ui.cc --- chrome/browser/ui/webui/constrained_web_dialog_ui.cc
+++ chrome/browser/ui/webui/constrained_web_dialog_ui.cc +++ chrome/browser/ui/webui/constrained_web_dialog_ui.cc
@@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
@ -38,18 +38,22 @@ index c85248ab0d0a0..05b3454c0356d 100644
#include "content/public/browser/render_frame_host.h" #include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui.h"
@@ -56,7 +57,9 @@ class ConstrainedWebDialogDelegateUserData @@ -56,7 +57,13 @@ class ConstrainedWebDialogDelegateUserData
ConstrainedWebDialogUI::ConstrainedWebDialogUI(content::WebUI* web_ui) ConstrainedWebDialogUI::ConstrainedWebDialogUI(content::WebUI* web_ui)
: WebUIController(web_ui) { : WebUIController(web_ui) {
#if BUILDFLAG(ENABLE_EXTENSIONS) #if BUILDFLAG(ENABLE_EXTENSIONS)
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled()) { + if (!cef::IsAlloyRuntimeEnabled()) {
+#endif
extensions::TabHelper::CreateForWebContents(web_ui->GetWebContents()); extensions::TabHelper::CreateForWebContents(web_ui->GetWebContents());
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif
#endif #endif
} }
diff --git chrome/browser/ui/webui/print_preview/print_preview_ui.cc chrome/browser/ui/webui/print_preview/print_preview_ui.cc diff --git chrome/browser/ui/webui/print_preview/print_preview_ui.cc chrome/browser/ui/webui/print_preview/print_preview_ui.cc
index 449f6f2db551e..677eecde93352 100644 index 449f6f2db551e..96cc73b2ca43b 100644
--- chrome/browser/ui/webui/print_preview/print_preview_ui.cc --- chrome/browser/ui/webui/print_preview/print_preview_ui.cc
+++ chrome/browser/ui/webui/print_preview/print_preview_ui.cc +++ chrome/browser/ui/webui/print_preview/print_preview_ui.cc
@@ -25,6 +25,7 @@ @@ -25,6 +25,7 @@
@ -60,21 +64,23 @@ index 449f6f2db551e..677eecde93352 100644
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/enterprise/browser_management/management_service_factory.h" #include "chrome/browser/enterprise/browser_management/management_service_factory.h"
#include "chrome/browser/pdf/pdf_extension_util.h" #include "chrome/browser/pdf/pdf_extension_util.h"
@@ -109,6 +110,13 @@ const char16_t kBasicPrintShortcut[] = u"(\u2325\u2318P)"; @@ -109,6 +110,15 @@ const char16_t kBasicPrintShortcut[] = u"(\u2325\u2318P)";
const char16_t kBasicPrintShortcut[] = u"(Ctrl+Shift+P)"; const char16_t kBasicPrintShortcut[] = u"(Ctrl+Shift+P)";
#endif #endif
+const char16_t* GetBasicPrintShortcut() { +const char16_t* GetBasicPrintShortcut() {
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (cef::IsAlloyRuntimeEnabled()) { + if (cef::IsAlloyRuntimeEnabled()) {
+ return u""; + return u"";
+ } + }
+#endif
+ return kBasicPrintShortcut; + return kBasicPrintShortcut;
+} +}
+ +
constexpr char kInvalidArgsForDidStartPreview[] = constexpr char kInvalidArgsForDidStartPreview[] =
"Invalid arguments for DidStartPreview"; "Invalid arguments for DidStartPreview";
constexpr char kInvalidPageIndexForDidPreviewPage[] = constexpr char kInvalidPageIndexForDidPreviewPage[] =
@@ -310,7 +318,7 @@ void AddPrintPreviewStrings(content::WebUIDataSource* source) { @@ -310,7 +320,7 @@ void AddPrintPreviewStrings(content::WebUIDataSource* source) {
source->AddLocalizedStrings(kLocalizedStrings); source->AddLocalizedStrings(kLocalizedStrings);
#if !BUILDFLAG(IS_CHROMEOS) #if !BUILDFLAG(IS_CHROMEOS)

View File

@ -1,5 +1,5 @@
diff --git chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc diff --git chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc
index 3a8e63a3bcbdd..69954e151f04e 100644 index 3a8e63a3bcbdd..3fded53efc474 100644
--- chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc --- chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc
+++ chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc +++ chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc
@@ -23,6 +23,7 @@ @@ -23,6 +23,7 @@
@ -10,12 +10,14 @@ index 3a8e63a3bcbdd..69954e151f04e 100644
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/enterprise/connectors/analysis/analysis_settings.h" #include "chrome/browser/enterprise/connectors/analysis/analysis_settings.h"
#include "chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.h" #include "chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.h"
@@ -357,6 +358,9 @@ bool ContentAnalysisDelegate::IsEnabled(Profile* profile, @@ -357,6 +358,11 @@ bool ContentAnalysisDelegate::IsEnabled(Profile* profile,
GURL url, GURL url,
Data* data, Data* data,
AnalysisConnector connector) { AnalysisConnector connector) {
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (cef::IsAlloyRuntimeEnabled()) + if (cef::IsAlloyRuntimeEnabled())
+ return false; + return false;
+#endif
+ +
auto* service = ConnectorsServiceFactory::GetForBrowserContext(profile); auto* service = ConnectorsServiceFactory::GetForBrowserContext(profile);
// If the corresponding Connector policy isn't set, don't perform scans. // If the corresponding Connector policy isn't set, don't perform scans.
@ -38,7 +40,7 @@ index e6d8a41c10f3a..18df8a6311d0a 100644
base::RepeatingCallback<content::BrowserContext*()> browser_context_getter = base::RepeatingCallback<content::BrowserContext*()> browser_context_getter =
base::BindRepeating( base::BindRepeating(
diff --git chrome/browser/net/profile_network_context_service.cc chrome/browser/net/profile_network_context_service.cc diff --git chrome/browser/net/profile_network_context_service.cc chrome/browser/net/profile_network_context_service.cc
index 77d18bd28eeaf..9eab054ea3416 100644 index 77d18bd28eeaf..395c62cc348df 100644
--- chrome/browser/net/profile_network_context_service.cc --- chrome/browser/net/profile_network_context_service.cc
+++ chrome/browser/net/profile_network_context_service.cc +++ chrome/browser/net/profile_network_context_service.cc
@@ -25,6 +25,7 @@ @@ -25,6 +25,7 @@
@ -49,7 +51,7 @@ index 77d18bd28eeaf..9eab054ea3416 100644
#include "chrome/browser/browser_features.h" #include "chrome/browser/browser_features.h"
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/content_settings/cookie_settings_factory.h" #include "chrome/browser/content_settings/cookie_settings_factory.h"
@@ -266,9 +267,12 @@ void UpdateCookieSettings(Profile* profile, ContentSettingsType type) { @@ -266,9 +267,16 @@ void UpdateCookieSettings(Profile* profile, ContentSettingsType type) {
// occurs in this class is unsynchronized, so it would be racy to rely on // occurs in this class is unsynchronized, so it would be racy to rely on
// this update finishing before calling the context's callback.) This // this update finishing before calling the context's callback.) This
// unfortunately triggers a double-update here. // unfortunately triggers a double-update here.
@ -57,28 +59,36 @@ index 77d18bd28eeaf..9eab054ea3416 100644
- FederatedIdentityPermissionContextFactory::GetForProfile(profile); - FederatedIdentityPermissionContextFactory::GetForProfile(profile);
- fedcm_context) { - fedcm_context) {
+ FederatedIdentityPermissionContext* fedcm_context = nullptr; + FederatedIdentityPermissionContext* fedcm_context = nullptr;
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled()) { + if (!cef::IsAlloyRuntimeEnabled()) {
+ #endif
+ fedcm_context = + fedcm_context =
+ FederatedIdentityPermissionContextFactory::GetForProfile(profile); + FederatedIdentityPermissionContextFactory::GetForProfile(profile);
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif
+ if (fedcm_context) { + if (fedcm_context) {
settings = fedcm_context->GetSharingPermissionGrantsAsContentSettings(); settings = fedcm_context->GetSharingPermissionGrantsAsContentSettings();
} }
} else { } else {
@@ -323,8 +327,10 @@ ProfileNetworkContextService::ProfileNetworkContextService(Profile* profile) @@ -323,8 +331,14 @@ ProfileNetworkContextService::ProfileNetworkContextService(Profile* profile)
base::Unretained(this))); base::Unretained(this)));
cookie_settings_ = CookieSettingsFactory::GetForProfile(profile); cookie_settings_ = CookieSettingsFactory::GetForProfile(profile);
cookie_settings_observation_.Observe(cookie_settings_.get()); cookie_settings_observation_.Observe(cookie_settings_.get());
- privacy_sandbox_settings_observer_.Observe( - privacy_sandbox_settings_observer_.Observe(
- PrivacySandboxSettingsFactory::GetForProfile(profile)); - PrivacySandboxSettingsFactory::GetForProfile(profile));
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled()) { + if (!cef::IsAlloyRuntimeEnabled()) {
+#endif
+ privacy_sandbox_settings_observer_.Observe( + privacy_sandbox_settings_observer_.Observe(
+ PrivacySandboxSettingsFactory::GetForProfile(profile)); + PrivacySandboxSettingsFactory::GetForProfile(profile));
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif
DisableQuicIfNotAllowed(); DisableQuicIfNotAllowed();
@@ -826,9 +832,12 @@ ProfileNetworkContextService::CreateCookieManagerParams( @@ -826,9 +840,16 @@ ProfileNetworkContextService::CreateCookieManagerParams(
continue; continue;
} }
if (type == ContentSettingsType::FEDERATED_IDENTITY_SHARING) { if (type == ContentSettingsType::FEDERATED_IDENTITY_SHARING) {
@ -86,15 +96,19 @@ index 77d18bd28eeaf..9eab054ea3416 100644
- FederatedIdentityPermissionContextFactory::GetForProfile(profile); - FederatedIdentityPermissionContextFactory::GetForProfile(profile);
- fedcm_context) { - fedcm_context) {
+ FederatedIdentityPermissionContext* fedcm_context = nullptr; + FederatedIdentityPermissionContext* fedcm_context = nullptr;
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled()) { + if (!cef::IsAlloyRuntimeEnabled()) {
+#endif
+ fedcm_context = + fedcm_context =
+ FederatedIdentityPermissionContextFactory::GetForProfile(profile); + FederatedIdentityPermissionContextFactory::GetForProfile(profile);
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif
+ if (fedcm_context) { + if (fedcm_context) {
out->content_settings[type] = out->content_settings[type] =
fedcm_context->GetSharingPermissionGrantsAsContentSettings(); fedcm_context->GetSharingPermissionGrantsAsContentSettings();
} else { } else {
@@ -1082,9 +1091,26 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal( @@ -1082,9 +1103,32 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal(
network_context_params->cookie_manager_params = network_context_params->cookie_manager_params =
CreateCookieManagerParams(profile_, *cookie_settings_); CreateCookieManagerParams(profile_, *cookie_settings_);
@ -103,6 +117,7 @@ index 77d18bd28eeaf..9eab054ea3416 100644
+ ::network::mojom::NetworkContextFilePaths::New(); + ::network::mojom::NetworkContextFilePaths::New();
+ } + }
+ +
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
// Configure on-disk storage for non-OTR profiles. OTR profiles just use // Configure on-disk storage for non-OTR profiles. OTR profiles just use
// default behavior (in memory storage, default sizes). // default behavior (in memory storage, default sizes).
- if (!in_memory) { - if (!in_memory) {
@ -117,12 +132,17 @@ index 77d18bd28eeaf..9eab054ea3416 100644
+ network_context_params->http_cache_max_size = + network_context_params->http_cache_max_size =
+ prefs->GetInteger(prefs::kDiskCacheSize); + prefs->GetInteger(prefs::kDiskCacheSize);
+ } + }
+#endif // BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ +
+ if (!in_memory && !cef::IsAlloyRuntimeEnabled()) { + if (!in_memory
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ && !cef::IsAlloyRuntimeEnabled()
+#endif
+ ) {
PrefService* local_state = g_browser_process->local_state(); PrefService* local_state = g_browser_process->local_state();
// Configure the HTTP cache path and size. // Configure the HTTP cache path and size.
base::FilePath base_cache_path; base::FilePath base_cache_path;
@@ -1093,15 +1119,14 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal( @@ -1093,15 +1137,14 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal(
local_state->GetFilePath(prefs::kDiskCacheDir); local_state->GetFilePath(prefs::kDiskCacheDir);
if (!disk_cache_dir.empty()) if (!disk_cache_dir.empty())
base_cache_path = disk_cache_dir.Append(base_cache_path.BaseName()); base_cache_path = disk_cache_dir.Append(base_cache_path.BaseName());
@ -142,16 +162,18 @@ index 77d18bd28eeaf..9eab054ea3416 100644
network_context_params->file_paths->data_directory = network_context_params->file_paths->data_directory =
path.Append(chrome::kNetworkDataDirname); path.Append(chrome::kNetworkDataDirname);
network_context_params->file_paths->unsandboxed_data_path = path; network_context_params->file_paths->unsandboxed_data_path = path;
@@ -1276,6 +1301,7 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal( @@ -1276,6 +1319,9 @@ void ProfileNetworkContextService::ConfigureNetworkContextParamsInternal(
network_context_params->first_party_sets_access_delegate_params = network_context_params->first_party_sets_access_delegate_params =
network::mojom::FirstPartySetsAccessDelegateParams::New(); network::mojom::FirstPartySetsAccessDelegateParams::New();
network_context_params->first_party_sets_access_delegate_params->enabled = network_context_params->first_party_sets_access_delegate_params->enabled =
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ cef::IsAlloyRuntimeEnabled() ? false : + cef::IsAlloyRuntimeEnabled() ? false :
+#endif
PrivacySandboxSettingsFactory::GetForProfile(profile_) PrivacySandboxSettingsFactory::GetForProfile(profile_)
->AreRelatedWebsiteSetsEnabled(); ->AreRelatedWebsiteSetsEnabled();
diff --git chrome/browser/net/profile_network_context_service_factory.cc chrome/browser/net/profile_network_context_service_factory.cc diff --git chrome/browser/net/profile_network_context_service_factory.cc chrome/browser/net/profile_network_context_service_factory.cc
index 14ac2ce8b90c5..66431eface762 100644 index 14ac2ce8b90c5..c22f8a7a57c69 100644
--- chrome/browser/net/profile_network_context_service_factory.cc --- chrome/browser/net/profile_network_context_service_factory.cc
+++ chrome/browser/net/profile_network_context_service_factory.cc +++ chrome/browser/net/profile_network_context_service_factory.cc
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
@ -162,18 +184,23 @@ index 14ac2ce8b90c5..66431eface762 100644
#include "chrome/browser/first_party_sets/first_party_sets_policy_service_factory.h" #include "chrome/browser/first_party_sets/first_party_sets_policy_service_factory.h"
#include "chrome/browser/net/profile_network_context_service.h" #include "chrome/browser/net/profile_network_context_service.h"
#include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h" #include "chrome/browser/privacy_sandbox/privacy_sandbox_settings_factory.h"
@@ -53,7 +54,9 @@ ProfileNetworkContextServiceFactory::ProfileNetworkContextServiceFactory() @@ -52,8 +53,14 @@ ProfileNetworkContextServiceFactory::ProfileNetworkContextServiceFactory()
#endif
#if BUILDFLAG(IS_CHROMEOS_ASH) #if BUILDFLAG(IS_CHROMEOS_ASH)
DependsOn(chromeos::CertificateProviderServiceFactory::GetInstance()); DependsOn(chromeos::CertificateProviderServiceFactory::GetInstance());
#endif +#endif
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled()) { + if (!cef::IsAlloyRuntimeEnabled()) {
#endif
DependsOn(PrivacySandboxSettingsFactory::GetInstance()); DependsOn(PrivacySandboxSettingsFactory::GetInstance());
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif
DependsOn( DependsOn(
first_party_sets::FirstPartySetsPolicyServiceFactory::GetInstance()); first_party_sets::FirstPartySetsPolicyServiceFactory::GetInstance());
} }
diff --git chrome/browser/signin/identity_manager_factory.cc chrome/browser/signin/identity_manager_factory.cc diff --git chrome/browser/signin/identity_manager_factory.cc chrome/browser/signin/identity_manager_factory.cc
index a635c32482ce0..77a3503cea229 100644 index a635c32482ce0..e478ee670c239 100644
--- chrome/browser/signin/identity_manager_factory.cc --- chrome/browser/signin/identity_manager_factory.cc
+++ chrome/browser/signin/identity_manager_factory.cc +++ chrome/browser/signin/identity_manager_factory.cc
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
@ -184,11 +211,13 @@ index a635c32482ce0..77a3503cea229 100644
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/image_fetcher/image_decoder_impl.h" #include "chrome/browser/image_fetcher/image_decoder_impl.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
@@ -97,6 +98,7 @@ IdentityManagerFactory::~IdentityManagerFactory() { @@ -97,6 +98,9 @@ IdentityManagerFactory::~IdentityManagerFactory() {
// static // static
signin::IdentityManager* IdentityManagerFactory::GetForProfile( signin::IdentityManager* IdentityManagerFactory::GetForProfile(
Profile* profile) { Profile* profile) {
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ DCHECK(!cef::IsAlloyRuntimeEnabled()); + DCHECK(!cef::IsAlloyRuntimeEnabled());
+#endif
return static_cast<signin::IdentityManager*>( return static_cast<signin::IdentityManager*>(
GetInstance()->GetServiceForBrowserContext(profile, true)); GetInstance()->GetServiceForBrowserContext(profile, true));
} }

View File

@ -1,5 +1,5 @@
diff --git chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc diff --git chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc
index 16c370e6d9759..1460a9c0d1f49 100644 index 16c370e6d9759..7fc6d74075dd4 100644
--- chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc --- chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc
+++ chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc +++ chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc
@@ -20,10 +20,12 @@ @@ -20,10 +20,12 @@
@ -15,33 +15,38 @@ index 16c370e6d9759..1460a9c0d1f49 100644
#include "chrome/browser/browser_process.h" #include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/chrome_content_browser_client_extensions_part.h" #include "chrome/browser/extensions/chrome_content_browser_client_extensions_part.h"
#include "chrome/browser/google/google_brand.h" #include "chrome/browser/google/google_brand.h"
@@ -422,7 +424,11 @@ void ChromeInternalLogSource::Fetch(SysLogsSourceCallback callback) { @@ -422,7 +424,15 @@ void ChromeInternalLogSource::Fetch(SysLogsSourceCallback callback) {
response->emplace(kOsVersionTag, os_version); response->emplace(kOsVersionTag, os_version);
#endif #endif
- PopulateSyncLogs(response.get()); +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!cef::IsAlloyRuntimeEnabled()) { + if (!cef::IsAlloyRuntimeEnabled()) {
+#endif
+ // Avoid loading ProfileSyncServiceFactory which depends on a lot of + // Avoid loading ProfileSyncServiceFactory which depends on a lot of
+ // unnecessary Chrome-specific factories. + // unnecessary Chrome-specific factories.
+ PopulateSyncLogs(response.get()); PopulateSyncLogs(response.get());
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif
PopulateExtensionInfoLogs(response.get()); PopulateExtensionInfoLogs(response.get());
PopulatePowerApiLogs(response.get()); PopulatePowerApiLogs(response.get());
#if BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_WIN)
@@ -510,8 +516,12 @@ void ChromeInternalLogSource::PopulateExtensionInfoLogs( @@ -510,8 +520,14 @@ void ChromeInternalLogSource::PopulateExtensionInfoLogs(
if (!profile) if (!profile)
return; return;
+ // May be nullptr if using CEF Alloy with extensions disabled. + // May be nullptr if using CEF Alloy with extensions disabled.
extensions::ExtensionRegistry* extension_registry = extensions::ExtensionRegistry* extension_registry =
extensions::ExtensionRegistry::Get(profile); extensions::ExtensionRegistry::Get(profile);
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (!extension_registry) + if (!extension_registry)
+ return; + return;
+#endif
+ +
std::string extensions_list; std::string extensions_list;
for (const scoped_refptr<const extensions::Extension>& extension : for (const scoped_refptr<const extensions::Extension>& extension :
extension_registry->enabled_extensions()) { extension_registry->enabled_extensions()) {
@@ -612,6 +622,8 @@ void ChromeInternalLogSource::PopulateOnboardingTime( @@ -612,6 +628,8 @@ void ChromeInternalLogSource::PopulateOnboardingTime(
#if BUILDFLAG(IS_WIN) #if BUILDFLAG(IS_WIN)
void ChromeInternalLogSource::PopulateUsbKeyboardDetected( void ChromeInternalLogSource::PopulateUsbKeyboardDetected(
SystemLogsResponse* response) { SystemLogsResponse* response) {
@ -51,10 +56,18 @@ index 16c370e6d9759..1460a9c0d1f49 100644
bool result = bool result =
base::win::IsKeyboardPresentOnSlate(ui::GetHiddenWindow(), &reason); base::win::IsKeyboardPresentOnSlate(ui::GetHiddenWindow(), &reason);
diff --git chrome/browser/memory_details.cc chrome/browser/memory_details.cc diff --git chrome/browser/memory_details.cc chrome/browser/memory_details.cc
index 58fe3bd8f62ae..41b5e35b09a80 100644 index 58fe3bd8f62ae..f8a2f456bded6 100644
--- chrome/browser/memory_details.cc --- chrome/browser/memory_details.cc
+++ chrome/browser/memory_details.cc +++ chrome/browser/memory_details.cc
@@ -298,9 +298,11 @@ void MemoryDetails::CollectChildInfoOnUIThread() { @@ -17,6 +17,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/task/thread_pool.h"
#include "build/build_config.h"
+#include "cef/libcef/features/features.h"
#include "chrome/browser/profiles/profile.h"
#include "components/nacl/common/nacl_process_type.h"
#include "components/strings/grit/components_strings.h"
@@ -298,9 +299,15 @@ void MemoryDetails::CollectChildInfoOnUIThread() {
render_process_host->GetBrowserContext())) { render_process_host->GetBrowserContext())) {
content::BrowserContext* context = content::BrowserContext* context =
render_process_host->GetBrowserContext(); render_process_host->GetBrowserContext();
@ -62,16 +75,21 @@ index 58fe3bd8f62ae..41b5e35b09a80 100644
+ // May be nullptr if using CEF Alloy with extensions disabled. + // May be nullptr if using CEF Alloy with extensions disabled.
extensions::ExtensionRegistry* extension_registry = extensions::ExtensionRegistry* extension_registry =
extensions::ExtensionRegistry::Get(context); extensions::ExtensionRegistry::Get(context);
- DCHECK(extension_registry); +#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ if (extension_registry) { + if (extension_registry) {
+#else
DCHECK(extension_registry);
+#endif
extension_set = &extension_registry->enabled_extensions(); extension_set = &extension_registry->enabled_extensions();
extensions::ProcessMap* process_map = extensions::ProcessMap* process_map =
extensions::ProcessMap::Get(context); extensions::ProcessMap::Get(context);
@@ -317,6 +319,7 @@ void MemoryDetails::CollectChildInfoOnUIThread() { @@ -317,6 +324,9 @@ void MemoryDetails::CollectChildInfoOnUIThread() {
break; break;
} }
} }
+#if BUILDFLAG(ENABLE_ALLOY_BOOTSTRAP)
+ } + }
+#endif
} }
#endif #endif

View File

@ -69,7 +69,9 @@ class ClientBrowserDelegate : public ClientAppBrowser::Delegate {
const CefString& current_directory) override { const CefString& current_directory) override {
// Add logging for some common switches that the user may attempt to use. // Add logging for some common switches that the user may attempt to use.
static const char* kIgnoredSwitches[] = { static const char* kIgnoredSwitches[] = {
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
switches::kEnableChromeRuntime, switches::kEnableChromeRuntime,
#endif
switches::kMultiThreadedMessageLoop, switches::kMultiThreadedMessageLoop,
switches::kOffScreenRenderingEnabled, switches::kOffScreenRenderingEnabled,
switches::kUseViews, switches::kUseViews,

View File

@ -187,6 +187,7 @@ std::string GetContentStatusString(cef_ssl_content_status_t status) {
return result; return result;
} }
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
// Load a data: URI containing the error message. // Load a data: URI containing the error message.
// Only used with Alloy style. // Only used with Alloy style.
void LoadErrorPage(CefRefPtr<CefFrame> frame, void LoadErrorPage(CefRefPtr<CefFrame> frame,
@ -212,6 +213,7 @@ void LoadErrorPage(CefRefPtr<CefFrame> frame,
ss << "</body></html>"; ss << "</body></html>";
frame->LoadURL(test_runner::GetDataURI(ss.str(), "text/html")); frame->LoadURL(test_runner::GetDataURI(ss.str(), "text/html"));
} }
#endif // !defined(DISABLE_ALLOY_BOOTSTRAP)
// Return HTML string with information about a certificate. // Return HTML string with information about a certificate.
std::string GetCertificateInformation(CefRefPtr<CefX509Certificate> cert, std::string GetCertificateInformation(CefRefPtr<CefX509Certificate> cert,
@ -1078,11 +1080,13 @@ void ClientHandler::OnLoadError(CefRefPtr<CefBrowser> browser,
} }
} }
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (use_alloy_style_) { if (use_alloy_style_) {
// Load the error page. // Load the error page.
LoadErrorPage(frame, "Page failed to load", failedUrl, LoadErrorPage(frame, "Page failed to load", failedUrl,
test_runner::GetErrorString(errorCode), errorText); test_runner::GetErrorString(errorCode), errorText);
} }
#endif
} }
bool ClientHandler::OnRequestMediaAccessPermission( bool ClientHandler::OnRequestMediaAccessPermission(
@ -1172,6 +1176,7 @@ bool ClientHandler::OnCertificateError(CefRefPtr<CefBrowser> browser,
return true; return true;
} }
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (use_alloy_style_) { if (use_alloy_style_) {
if (auto cert = ssl_info->GetX509Certificate()) { if (auto cert = ssl_info->GetX509Certificate()) {
// Load the error page. // Load the error page.
@ -1180,6 +1185,7 @@ bool ClientHandler::OnCertificateError(CefRefPtr<CefBrowser> browser,
GetCertificateInformation(cert, ssl_info->GetCertStatus())); GetCertificateInformation(cert, ssl_info->GetCertStatus()));
} }
} }
#endif
return false; // Cancel the request. return false; // Cancel the request.
} }
@ -1248,12 +1254,14 @@ void ClientHandler::OnRenderProcessTerminated(CefRefPtr<CefBrowser> browser,
// Don't reload the URL that just resulted in termination. // Don't reload the URL that just resulted in termination.
if (url.find(start_url) == 0) { if (url.find(start_url) == 0) {
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (use_alloy_style_) { if (use_alloy_style_) {
LoadErrorPage(frame, "Render process terminated", frame->GetURL(), LoadErrorPage(frame, "Render process terminated", frame->GetURL(),
test_runner::GetErrorString(status) + " (" + test_runner::GetErrorString(status) + " (" +
error_string.ToString() + ")", error_string.ToString() + ")",
std::string()); std::string());
} }
#endif
return; return;
} }
@ -1300,6 +1308,7 @@ void ClientHandler::ShowDevTools(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefBrowserHost> host = browser->GetHost(); CefRefPtr<CefBrowserHost> host = browser->GetHost();
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
// Test if the DevTools browser already exists. // Test if the DevTools browser already exists.
if (use_alloy_style_ && !host->HasDevTools() && if (use_alloy_style_ && !host->HasDevTools() &&
!MainContext::Get()->UseChromeBootstrap()) { !MainContext::Get()->UseChromeBootstrap()) {
@ -1309,6 +1318,7 @@ void ClientHandler::ShowDevTools(CefRefPtr<CefBrowser> browser,
CreatePopupWindow(browser, /*is_devtools=*/true, CefPopupFeatures(), CreatePopupWindow(browser, /*is_devtools=*/true, CefPopupFeatures(),
windowInfo, client, settings); windowInfo, client, settings);
} }
#endif
// Create the DevTools browser if it doesn't already exist. // Create the DevTools browser if it doesn't already exist.
// Otherwise, focus the existing DevTools browser and inspect the element // Otherwise, focus the existing DevTools browser and inspect the element

View File

@ -43,8 +43,10 @@ class MainContext {
// Returns the background color. // Returns the background color.
virtual cef_color_t GetBackgroundColor() = 0; virtual cef_color_t GetBackgroundColor() = 0;
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
// Returns true if the Chrome runtime bootstrap will be used. // Returns true if the Chrome runtime bootstrap will be used.
virtual bool UseChromeBootstrap() = 0; virtual bool UseChromeBootstrap() = 0;
#endif
// Returns true if the Views framework will be used as the global default. // Returns true if the Views framework will be used as the global default.
virtual bool UseViewsGlobal() = 0; virtual bool UseViewsGlobal() = 0;

View File

@ -76,9 +76,11 @@ MainContextImpl::MainContextImpl(CefRefPtr<CefCommandLine> command_line,
windowless_frame_rate_ = shared_texture_enabled_ ? 60 : 30; windowless_frame_rate_ = shared_texture_enabled_ ? 60 : 30;
} }
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
// Enable Chrome runtime bootstrap. See issue #2969 for details. // Enable Chrome runtime bootstrap. See issue #2969 for details.
use_chrome_bootstrap_ = use_chrome_bootstrap_ =
command_line_->HasSwitch(switches::kEnableChromeRuntime); command_line_->HasSwitch(switches::kEnableChromeRuntime);
#endif
// Whether the Views framework will be used. // Whether the Views framework will be used.
use_views_ = command_line_->HasSwitch(switches::kUseViews); use_views_ = command_line_->HasSwitch(switches::kUseViews);
@ -90,7 +92,10 @@ MainContextImpl::MainContextImpl(CefRefPtr<CefCommandLine> command_line,
} }
// Whether Alloy style will be used. // Whether Alloy style will be used.
use_alloy_style_ = !use_chrome_bootstrap_ || use_alloy_style_ =
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
!use_chrome_bootstrap_ ||
#endif
command_line_->HasSwitch(switches::kUseAlloyStyle); command_line_->HasSwitch(switches::kUseAlloyStyle);
if (use_windowless_rendering_ && !use_alloy_style_) { if (use_windowless_rendering_ && !use_alloy_style_) {
@ -100,7 +105,10 @@ MainContextImpl::MainContextImpl(CefRefPtr<CefCommandLine> command_line,
// Whether to use a native parent window with Chrome runtime. // Whether to use a native parent window with Chrome runtime.
const bool use_chrome_native_parent = const bool use_chrome_native_parent =
use_chrome_bootstrap_ && command_line->HasSwitch(switches::kUseNative); #if !defined(DISABLE_ALLOY_BOOTSTRAP)
use_chrome_bootstrap_ &&
#endif
command_line->HasSwitch(switches::kUseNative);
#if defined(OS_MAC) #if defined(OS_MAC)
if (use_chrome_native_parent && !use_alloy_style_) { if (use_chrome_native_parent && !use_alloy_style_) {
@ -110,8 +118,11 @@ MainContextImpl::MainContextImpl(CefRefPtr<CefCommandLine> command_line,
} }
#endif #endif
if (use_chrome_bootstrap_ && !use_views_ && !use_chrome_native_parent && if (
!use_windowless_rendering_) { #if !defined(DISABLE_ALLOY_BOOTSTRAP)
use_chrome_bootstrap_ &&
#endif
!use_views_ && !use_chrome_native_parent && !use_windowless_rendering_) {
LOG(WARNING) << "Chrome runtime defaults to the Views framework."; LOG(WARNING) << "Chrome runtime defaults to the Views framework.";
use_views_ = true; use_views_ = true;
} }
@ -133,10 +144,12 @@ MainContextImpl::MainContextImpl(CefRefPtr<CefCommandLine> command_line,
} }
// Log the current configuration. // Log the current configuration.
LOG(WARNING) << "Using " << (use_chrome_bootstrap_ ? "Chrome" : "Alloy") LOG(WARNING) << "Using "
<< " bootstrap; " << (use_alloy_style_ ? "Alloy" : "Chrome") #if !defined(DISABLE_ALLOY_BOOTSTRAP)
<< " style; " << (use_views_ ? "Views" : "Native") << (use_chrome_bootstrap_ ? "Chrome" : "Alloy") << " bootstrap; "
<< "-hosted window; " #endif
<< (use_alloy_style_ ? "Alloy" : "Chrome") << " style; "
<< (use_views_ ? "Views" : "Native") << "-hosted window; "
<< (use_windowless_rendering_ ? "Windowless" : "Windowed") << (use_windowless_rendering_ ? "Windowless" : "Windowed")
<< " rendering (not a warning)"; << " rendering (not a warning)";
} }
@ -175,9 +188,11 @@ cef_color_t MainContextImpl::GetBackgroundColor() {
return background_color_; return background_color_;
} }
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
bool MainContextImpl::UseChromeBootstrap() { bool MainContextImpl::UseChromeBootstrap() {
return use_chrome_bootstrap_; return use_chrome_bootstrap_;
} }
#endif
bool MainContextImpl::UseViewsGlobal() { bool MainContextImpl::UseViewsGlobal() {
return use_views_; return use_views_;
@ -199,9 +214,11 @@ bool MainContextImpl::UseDefaultPopup() {
void MainContextImpl::PopulateSettings(CefSettings* settings) { void MainContextImpl::PopulateSettings(CefSettings* settings) {
client::ClientAppBrowser::PopulateSettings(command_line_, *settings); client::ClientAppBrowser::PopulateSettings(command_line_, *settings);
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (use_chrome_bootstrap_) { if (use_chrome_bootstrap_) {
settings->chrome_runtime = true; settings->chrome_runtime = true;
} }
#endif
CefString(&settings->cache_path) = CefString(&settings->cache_path) =
command_line_->GetSwitchValue(switches::kCachePath); command_line_->GetSwitchValue(switches::kCachePath);
@ -245,7 +262,10 @@ void MainContextImpl::PopulateBrowserSettings(CefBrowserSettings* settings) {
settings->background_color = browser_background_color_; settings->background_color = browser_background_color_;
} }
if (use_chrome_bootstrap_ && if (
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
use_chrome_bootstrap_ &&
#endif
command_line_->HasSwitch(switches::kHideChromeBubbles)) { command_line_->HasSwitch(switches::kHideChromeBubbles)) {
settings->chrome_status_bubble = STATE_DISABLED; settings->chrome_status_bubble = STATE_DISABLED;
settings->chrome_zoom_bubble = STATE_DISABLED; settings->chrome_zoom_bubble = STATE_DISABLED;

View File

@ -29,7 +29,9 @@ class MainContextImpl : public MainContext {
std::string GetAppWorkingDirectory() override; std::string GetAppWorkingDirectory() override;
std::string GetMainURL(CefRefPtr<CefCommandLine> command_line) override; std::string GetMainURL(CefRefPtr<CefCommandLine> command_line) override;
cef_color_t GetBackgroundColor() override; cef_color_t GetBackgroundColor() override;
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
bool UseChromeBootstrap() override; bool UseChromeBootstrap() override;
#endif
bool UseViewsGlobal() override; bool UseViewsGlobal() override;
bool UseAlloyStyleGlobal() override; bool UseAlloyStyleGlobal() override;
bool TouchEventsEnabled() override; bool TouchEventsEnabled() override;
@ -73,7 +75,9 @@ class MainContextImpl : public MainContext {
cef_color_t browser_background_color_ = 0; cef_color_t browser_background_color_ = 0;
bool use_windowless_rendering_; bool use_windowless_rendering_;
int windowless_frame_rate_ = 0; int windowless_frame_rate_ = 0;
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
bool use_chrome_bootstrap_; bool use_chrome_bootstrap_;
#endif
bool use_views_; bool use_views_;
bool use_alloy_style_; bool use_alloy_style_;

View File

@ -35,6 +35,7 @@ class ClientRequestContextHandler : public CefRequestContextHandler,
CefRefPtr<CefRequestContext> request_context) override { CefRefPtr<CefRequestContext> request_context) override {
CEF_REQUIRE_UI_THREAD(); CEF_REQUIRE_UI_THREAD();
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
const auto main_context = MainContext::Get(); const auto main_context = MainContext::Get();
CefRefPtr<CefCommandLine> command_line = CefRefPtr<CefCommandLine> command_line =
CefCommandLine::GetGlobalCommandLine(); CefCommandLine::GetGlobalCommandLine();
@ -64,6 +65,7 @@ class ClientRequestContextHandler : public CefRequestContextHandler,
} }
} }
} }
#endif // !defined(DISABLE_ALLOY_BOOTSTRAP)
// Allow the startup URL to create popups that bypass the popup blocker. // Allow the startup URL to create popups that bypass the popup blocker.
// For example, via Tests > New Popup from the top menu. This applies for // For example, via Tests > New Popup from the top menu. This applies for
@ -118,7 +120,10 @@ void SanityCheckWindowConfig(const bool is_devtools,
bool& use_views, bool& use_views,
bool& use_alloy_style, bool& use_alloy_style,
bool& with_osr) { bool& with_osr) {
if (MainContext::Get()->UseChromeBootstrap()) { #if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (MainContext::Get()->UseChromeBootstrap())
#endif
{
if (is_devtools && use_alloy_style) { if (is_devtools && use_alloy_style) {
LOG(WARNING) LOG(WARNING)
<< "Alloy style is not supported with Chrome runtime DevTools;" << "Alloy style is not supported with Chrome runtime DevTools;"
@ -173,8 +178,8 @@ scoped_refptr<RootWindow> RootWindowManager::CreateRootWindow(
SanityCheckWindowConfig(/*is_devtools=*/false, config->use_views, SanityCheckWindowConfig(/*is_devtools=*/false, config->use_views,
config->use_alloy_style, config->with_osr); config->use_alloy_style, config->with_osr);
scoped_refptr<RootWindow> root_window = RootWindow::Create( scoped_refptr<RootWindow> root_window =
config->use_views, config->use_alloy_style); RootWindow::Create(config->use_views, config->use_alloy_style);
root_window->Init(this, std::move(config), settings); root_window->Init(this, std::move(config), settings);
// Store a reference to the root window on the main thread. // Store a reference to the root window on the main thread.
@ -400,7 +405,11 @@ CefRefPtr<CefRequestContext> RootWindowManager::CreateRequestContext(
if (request_context_per_browser_) { if (request_context_per_browser_) {
// Synchronous use of non-global request contexts is not safe with the // Synchronous use of non-global request contexts is not safe with the
// Chrome runtime. // Chrome runtime.
CHECK(!callback.is_null() || !MainContext::Get()->UseChromeBootstrap()); CHECK(!callback.is_null()
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
|| !MainContext::Get()->UseChromeBootstrap()
#endif
);
// Create a new request context for each browser. // Create a new request context for each browser.
CefRequestContextSettings settings; CefRequestContextSettings settings;

View File

@ -1132,14 +1132,17 @@ ViewsWindow::ViewsWindow(WindowType type,
SetBrowserView(browser_view); SetBrowserView(browser_view);
} }
if (MainContext::Get()->UseChromeBootstrap()) { #if !defined(DISABLE_ALLOY_BOOTSTRAP)
use_alloy_style_window_ = if (!MainContext::Get()->UseChromeBootstrap()) {
use_alloy_style_ &&
!command_line_->HasSwitch(switches::kUseChromeStyleWindow);
} else {
// Alloy bootstrap requires Alloy style. // Alloy bootstrap requires Alloy style.
DCHECK(use_alloy_style_); DCHECK(use_alloy_style_);
use_alloy_style_window_ = true; use_alloy_style_window_ = true;
} else
#endif
{
use_alloy_style_window_ =
use_alloy_style_ &&
!command_line_->HasSwitch(switches::kUseChromeStyleWindow);
} }
const bool is_normal_type = type_ == WindowType::NORMAL; const bool is_normal_type = type_ == WindowType::NORMAL;

View File

@ -58,6 +58,7 @@ int main(int argc, char* argv[]) {
// Specify CEF global settings here. // Specify CEF global settings here.
CefSettings settings; CefSettings settings;
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
// Use the CEF Chrome runtime if "--enable-chrome-runtime" is specified via // Use the CEF Chrome runtime if "--enable-chrome-runtime" is specified via
// the command-line. Otherwise, use the CEF Alloy runtime. For more // the command-line. Otherwise, use the CEF Alloy runtime. For more
// information about CEF runtimes see // information about CEF runtimes see
@ -65,6 +66,7 @@ int main(int argc, char* argv[]) {
if (command_line->HasSwitch("enable-chrome-runtime")) { if (command_line->HasSwitch("enable-chrome-runtime")) {
settings.chrome_runtime = true; settings.chrome_runtime = true;
} }
#endif
// When generating projects with CMake the CEF_USE_SANDBOX value will be defined // When generating projects with CMake the CEF_USE_SANDBOX value will be defined
// automatically. Pass -DUSE_SANDBOX=OFF to the CMake command-line to disable // automatically. Pass -DUSE_SANDBOX=OFF to the CMake command-line to disable

View File

@ -150,6 +150,7 @@ int main(int argc, char* argv[]) {
// Specify CEF global settings here. // Specify CEF global settings here.
CefSettings settings; CefSettings settings;
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
// Use the CEF Chrome runtime if "--enable-chrome-runtime" is specified via // Use the CEF Chrome runtime if "--enable-chrome-runtime" is specified via
// the command-line. Otherwise, use the CEF Alloy runtime. For more // the command-line. Otherwise, use the CEF Alloy runtime. For more
// information about CEF runtimes see // information about CEF runtimes see
@ -157,6 +158,7 @@ int main(int argc, char* argv[]) {
if (command_line->HasSwitch("enable-chrome-runtime")) { if (command_line->HasSwitch("enable-chrome-runtime")) {
settings.chrome_runtime = true; settings.chrome_runtime = true;
} }
#endif
// When generating projects with CMake the CEF_USE_SANDBOX value will be // When generating projects with CMake the CEF_USE_SANDBOX value will be
// defined automatically. Pass -DUSE_SANDBOX=OFF to the CMake command-line // defined automatically. Pass -DUSE_SANDBOX=OFF to the CMake command-line

View File

@ -74,6 +74,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
// Specify CEF global settings here. // Specify CEF global settings here.
CefSettings settings; CefSettings settings;
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
// Use the CEF Chrome runtime if "--enable-chrome-runtime" is specified via // Use the CEF Chrome runtime if "--enable-chrome-runtime" is specified via
// the command-line. Otherwise, use the CEF Alloy runtime. For more // the command-line. Otherwise, use the CEF Alloy runtime. For more
// information about CEF runtimes see // information about CEF runtimes see
@ -81,6 +82,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
if (command_line->HasSwitch("enable-chrome-runtime")) { if (command_line->HasSwitch("enable-chrome-runtime")) {
settings.chrome_runtime = true; settings.chrome_runtime = true;
} }
#endif
#if !defined(CEF_USE_SANDBOX) #if !defined(CEF_USE_SANDBOX)
settings.no_sandbox = true; settings.no_sandbox = true;

View File

@ -117,7 +117,10 @@ void SimpleApp::OnContextInitialized() {
// Alloy runtime bootstrap and optional with the Chrome runtime bootstrap. // Alloy runtime bootstrap and optional with the Chrome runtime bootstrap.
bool use_alloy_style = true; bool use_alloy_style = true;
cef_runtime_style_t runtime_style = CEF_RUNTIME_STYLE_DEFAULT; cef_runtime_style_t runtime_style = CEF_RUNTIME_STYLE_DEFAULT;
if (command_line->HasSwitch("enable-chrome-runtime")) { #if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (command_line->HasSwitch("enable-chrome-runtime"))
#endif
{
use_alloy_style = command_line->HasSwitch("use-alloy-style"); use_alloy_style = command_line->HasSwitch("use-alloy-style");
if (use_alloy_style) { if (use_alloy_style) {
runtime_style = CEF_RUNTIME_STYLE_ALLOY; runtime_style = CEF_RUNTIME_STYLE_ALLOY;

View File

@ -26,7 +26,10 @@ class CorsBrowserTest : public client::ClientAppBrowser::Delegate {
CorsBrowserTest() = default; CorsBrowserTest() = default;
void OnContextInitialized(CefRefPtr<client::ClientAppBrowser> app) override { void OnContextInitialized(CefRefPtr<client::ClientAppBrowser> app) override {
if (IsChromeBootstrap()) { #if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (IsChromeBootstrap())
#endif
{
// Disable InsecureFormNavigationThrottle which blocks 307 redirect of // Disable InsecureFormNavigationThrottle which blocks 307 redirect of
// POST requests from HTTPS to custom non-standard scheme causing the // POST requests from HTTPS to custom non-standard scheme causing the
// CorsTest.RedirectPost307HttpSchemeToCustomNonStandardScheme test to // CorsTest.RedirectPost307HttpSchemeToCustomNonStandardScheme test to

View File

@ -279,7 +279,11 @@ class DownloadTestHandler : public TestHandler {
SendClick(browser, SendClick(browser,
test_mode_ == CLICKED_INVALID ? EVENTFLAG_ALT_DOWN : 0); test_mode_ == CLICKED_INVALID ? EVENTFLAG_ALT_DOWN : 0);
if (IsChromeBootstrap() && is_clicked_invalid()) { if (
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
IsChromeBootstrap() &&
#endif
is_clicked_invalid()) {
// Destroy the test after a bit because there will be no further // Destroy the test after a bit because there will be no further
// callbacks. // callbacks.
CefPostDelayedTask( CefPostDelayedTask(
@ -513,11 +517,14 @@ class DownloadTestHandler : public TestHandler {
} }
if (is_clicked_invalid()) { if (is_clicked_invalid()) {
if (IsChromeBootstrap()) { #if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (!IsChromeBootstrap()) {
EXPECT_TRUE(got_can_download_);
} else
#endif
{
// No CanDownload for invalid protocol links. // No CanDownload for invalid protocol links.
EXPECT_FALSE(got_can_download_); EXPECT_FALSE(got_can_download_);
} else {
EXPECT_TRUE(got_can_download_);
} }
} else if (is_clicked()) { } else if (is_clicked()) {
EXPECT_TRUE(got_can_download_); EXPECT_TRUE(got_can_download_);

View File

@ -533,15 +533,18 @@ TEST(PreferenceTest, RequestContextGlobalSetGetShared) {
// Get the values from the 4th context. // Get the values from the 4th context.
*PendingAction() = "Get the values from the 4th context."; *PendingAction() = "Get the values from the 4th context.";
if (IsChromeBootstrap()) { #if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (!IsChromeBootstrap()) {
// They should be at the default.
ValidateDefaults(context4, false, event);
} else
#endif
{
// With the Chrome runtime, prefs set via an incognito profile will become // With the Chrome runtime, prefs set via an incognito profile will become
// an overlay on top of the global (parent) profile. The incognito profile // an overlay on top of the global (parent) profile. The incognito profile
// shares the prefs in this case because they were set via the global // shares the prefs in this case because they were set via the global
// profile. // profile.
ValidateGet(context4, event); ValidateGet(context4, event);
} else {
// They should be at the default.
ValidateDefaults(context4, false, event);
} }
event->Wait(); event->Wait();

View File

@ -233,15 +233,19 @@ int main(int argc, char* argv[]) {
} }
// Log the current configuration. // Log the current configuration.
LOG(WARNING) LOG(WARNING) << "Using "
<< "Using " << (IsChromeBootstrap() ? "Chrome" : "Alloy") #if !defined(DISABLE_ALLOY_BOOTSTRAP)
<< " bootstrap; " << (UseAlloyStyleBrowserGlobal() ? "Alloy" : "Chrome") << (IsChromeBootstrap() ? "Chrome" : "Alloy") << " bootstrap; "
#endif
<< (UseAlloyStyleBrowserGlobal() ? "Alloy" : "Chrome")
<< " style browser; " << " style browser; "
<< (UseViewsGlobal() << (UseViewsGlobal()
? (std::string(UseAlloyStyleWindowGlobal() ? "Alloy" : "Chrome") + ? (std::string(UseAlloyStyleWindowGlobal() ? "Alloy"
: "Chrome") +
" style window; ") " style window; ")
: "") : "")
<< (UseViewsGlobal() ? "Views" : "Native") << "-hosted (not a warning)"; << (UseViewsGlobal() ? "Views" : "Native")
<< "-hosted (not a warning)";
std::unique_ptr<client::MainMessageLoop> message_loop; std::unique_ptr<client::MainMessageLoop> message_loop;

View File

@ -26,10 +26,12 @@ namespace {
cef_runtime_style_t GetExpectedRuntimeStyle(TestHandler* handler, cef_runtime_style_t GetExpectedRuntimeStyle(TestHandler* handler,
bool is_devtools_popup, bool is_devtools_popup,
bool is_window) { bool is_window) {
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (!IsChromeBootstrap()) { if (!IsChromeBootstrap()) {
// Alloy runtime always uses Alloy style. // Alloy runtime always uses Alloy style.
return CEF_RUNTIME_STYLE_ALLOY; return CEF_RUNTIME_STYLE_ALLOY;
} }
#endif
const bool alloy_requested = is_window ? handler->use_alloy_style_window() const bool alloy_requested = is_window ? handler->use_alloy_style_window()
: handler->use_alloy_style_browser(); : handler->use_alloy_style_browser();
@ -690,10 +692,12 @@ void TestHandler::SetUseViews(bool use_views) {
void TestHandler::SetUseAlloyStyle(bool use_alloy_style_browser, void TestHandler::SetUseAlloyStyle(bool use_alloy_style_browser,
bool use_alloy_style_window) { bool use_alloy_style_window) {
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (!IsChromeBootstrap()) { if (!IsChromeBootstrap()) {
LOG(WARNING) << "SetUseAlloyStyle is ignored with the Alloy runtime"; LOG(WARNING) << "SetUseAlloyStyle is ignored with the Alloy runtime";
return; return;
} }
#endif
if (!CefCurrentlyOn(TID_UI)) { if (!CefCurrentlyOn(TID_UI)) {
CefPostTask(TID_UI, base::BindOnce(&TestHandler::SetUseAlloyStyle, this, CefPostTask(TID_UI, base::BindOnce(&TestHandler::SetUseAlloyStyle, this,

View File

@ -144,9 +144,11 @@ int CefTestSuite::Run() {
} }
void CefTestSuite::GetSettings(CefSettings& settings) const { void CefTestSuite::GetSettings(CefSettings& settings) const {
// Enable the experimental Chrome runtime. See issue #2969 for details. #if !defined(DISABLE_ALLOY_BOOTSTRAP)
// Enable the Chrome runtime. See issue #2969 for details.
settings.chrome_runtime = settings.chrome_runtime =
command_line_->HasSwitch(client::switches::kEnableChromeRuntime); command_line_->HasSwitch(client::switches::kEnableChromeRuntime);
#endif
CefString(&settings.cache_path) = root_cache_path_; CefString(&settings.cache_path) = root_cache_path_;
CefString(&settings.root_cache_path) = root_cache_path_; CefString(&settings.root_cache_path) = root_cache_path_;

View File

@ -291,6 +291,7 @@ bool TestOldResourceAPI() {
return state; return state;
} }
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
bool IsChromeBootstrap() { bool IsChromeBootstrap() {
static bool state = []() { static bool state = []() {
return CefCommandLine::GetGlobalCommandLine()->HasSwitch( return CefCommandLine::GetGlobalCommandLine()->HasSwitch(
@ -298,6 +299,7 @@ bool IsChromeBootstrap() {
}(); }();
return state; return state;
} }
#endif
bool UseViewsGlobal() { bool UseViewsGlobal() {
static bool use_views = []() { static bool use_views = []() {
@ -309,10 +311,12 @@ bool UseViewsGlobal() {
bool UseAlloyStyleBrowserGlobal() { bool UseAlloyStyleBrowserGlobal() {
static bool use_alloy_style = []() { static bool use_alloy_style = []() {
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (!IsChromeBootstrap()) { if (!IsChromeBootstrap()) {
// Alloy runtime always uses Alloy style. // Alloy runtime always uses Alloy style.
return true; return true;
} }
#endif
return CefCommandLine::GetGlobalCommandLine()->HasSwitch( return CefCommandLine::GetGlobalCommandLine()->HasSwitch(
client::switches::kUseAlloyStyle); client::switches::kUseAlloyStyle);
}(); }();
@ -321,10 +325,12 @@ bool UseAlloyStyleBrowserGlobal() {
bool UseAlloyStyleWindowGlobal() { bool UseAlloyStyleWindowGlobal() {
static bool use_alloy_style = []() { static bool use_alloy_style = []() {
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (!IsChromeBootstrap()) { if (!IsChromeBootstrap()) {
// Alloy runtime always uses Alloy style. // Alloy runtime always uses Alloy style.
return true; return true;
} }
#endif
auto command_line = CefCommandLine::GetGlobalCommandLine(); auto command_line = CefCommandLine::GetGlobalCommandLine();
return command_line->HasSwitch(client::switches::kUseAlloyStyle) && return command_line->HasSwitch(client::switches::kUseAlloyStyle) &&
!command_line->HasSwitch(client::switches::kUseChromeStyleWindow); !command_line->HasSwitch(client::switches::kUseChromeStyleWindow);
@ -335,39 +341,50 @@ bool UseAlloyStyleWindowGlobal() {
std::string ComputeViewsWindowTitle(CefRefPtr<CefWindow> window, std::string ComputeViewsWindowTitle(CefRefPtr<CefWindow> window,
CefRefPtr<CefBrowserView> browser_view) { CefRefPtr<CefBrowserView> browser_view) {
std::string title = "CefTest - Views - "; std::string title = "CefTest - Views - ";
if (IsChromeBootstrap()) { #if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (!IsChromeBootstrap()) {
title += "Alloy";
} else
#endif
{
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
title += "Chrome - ";
#endif
std::string window_style = std::string window_style =
window->GetRuntimeStyle() == CEF_RUNTIME_STYLE_CHROME ? "Chrome" window->GetRuntimeStyle() == CEF_RUNTIME_STYLE_CHROME ? "Chrome"
: "Alloy"; : "Alloy";
title += "Chrome - " + window_style + " Window"; title += window_style + " Window";
if (browser_view) { if (browser_view) {
std::string browser_style = std::string browser_style =
browser_view->GetRuntimeStyle() == CEF_RUNTIME_STYLE_CHROME ? "Chrome" browser_view->GetRuntimeStyle() == CEF_RUNTIME_STYLE_CHROME ? "Chrome"
: "Alloy"; : "Alloy";
title += " - " + browser_style + " BrowserView"; title += " - " + browser_style + " BrowserView";
} }
} else {
title += "Alloy";
} }
return title; return title;
} }
std::string ComputeNativeWindowTitle(bool use_alloy_style) { std::string ComputeNativeWindowTitle(bool use_alloy_style) {
std::string title = "CefTest - Native - "; std::string title = "CefTest - Native - ";
if (IsChromeBootstrap()) { #if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (!IsChromeBootstrap()) {
title += "Alloy";
} else
#endif
{
title += "Chrome - "; title += "Chrome - ";
title += use_alloy_style ? "Alloy Browser" : "Chrome Browser"; title += use_alloy_style ? "Alloy Browser" : "Chrome Browser";
} else {
title += "Alloy";
} }
return title; return title;
} }
bool IsBFCacheEnabled() { bool IsBFCacheEnabled() {
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
// Supported by the Chrome runtime only, see issue #3237. // Supported by the Chrome runtime only, see issue #3237.
if (!IsChromeBootstrap()) { if (!IsChromeBootstrap()) {
return false; return false;
} }
#endif
static bool state = []() { static bool state = []() {
const std::string& value = const std::string& value =
@ -379,13 +396,17 @@ bool IsBFCacheEnabled() {
} }
bool IsSameSiteBFCacheEnabled() { bool IsSameSiteBFCacheEnabled() {
// Same-site BFCache is enabled by default starting in M101 and does not have // Same-site BFCache is enabled by default starting in M101 and does not
// a separate configuration flag. // have a separate configuration flag.
return IsBFCacheEnabled(); return IsBFCacheEnabled();
} }
bool IgnoreURL(const std::string& url) { bool IgnoreURL(const std::string& url) {
return IsChromeBootstrap() && url.find("/favicon.ico") != std::string::npos; return
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
IsChromeBootstrap() &&
#endif
url.find("/favicon.ico") != std::string::npos;
} }
std::optional<int> GetConfiguredTestTimeout(int timeout_ms) { std::optional<int> GetConfiguredTestTimeout(int timeout_ms) {
@ -401,7 +422,11 @@ std::optional<int> GetConfiguredTestTimeout(int timeout_ms) {
return dval; return dval;
} }
} }
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
return IsChromeBootstrap() ? 2.0 : 1.0; return IsChromeBootstrap() ? 2.0 : 1.0;
#else
return 2.0;
#endif
}(); }();
if (!multiplier) { if (!multiplier) {
@ -429,7 +454,10 @@ void SendMouseClickEvent(CefRefPtr<CefBrowser> browser,
void GrantPopupPermission(CefRefPtr<CefRequestContext> request_context, void GrantPopupPermission(CefRefPtr<CefRequestContext> request_context,
const std::string& parent_url) { const std::string& parent_url) {
if (IsChromeBootstrap()) { #if !defined(DISABLE_ALLOY_BOOTSTRAP)
if (IsChromeBootstrap())
#endif
{
static bool test_website_setting = []() { static bool test_website_setting = []() {
return CefCommandLine::GetGlobalCommandLine()->HasSwitch( return CefCommandLine::GetGlobalCommandLine()->HasSwitch(
"test-website-setting"); "test-website-setting");

View File

@ -87,8 +87,10 @@ inline bool IsTestRequestContextModeCustom(TestRequestContextMode mode) {
// Returns true if the old CefResourceHandler API should be tested. // Returns true if the old CefResourceHandler API should be tested.
bool TestOldResourceAPI(); bool TestOldResourceAPI();
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
// Returns true if the Chrome runtime is enabled. // Returns true if the Chrome runtime is enabled.
bool IsChromeBootstrap(); bool IsChromeBootstrap();
#endif
// Returns true if Views should be used as a the global default. // Returns true if Views should be used as a the global default.
bool UseViewsGlobal(); bool UseViewsGlobal();

View File

@ -43,9 +43,13 @@ const char kAlwaysOnTop[] = "always-on-top";
const char kHideTopMenu[] = "hide-top-menu"; const char kHideTopMenu[] = "hide-top-menu";
const char kSslClientCertificate[] = "ssl-client-certificate"; const char kSslClientCertificate[] = "ssl-client-certificate";
const char kCRLSetsPath[] = "crl-sets-path"; const char kCRLSetsPath[] = "crl-sets-path";
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
const char kLoadExtension[] = "load-extension"; const char kLoadExtension[] = "load-extension";
#endif
const char kNoActivate[] = "no-activate"; const char kNoActivate[] = "no-activate";
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
const char kEnableChromeRuntime[] = "enable-chrome-runtime"; const char kEnableChromeRuntime[] = "enable-chrome-runtime";
#endif
const char kShowChromeToolbar[] = "show-chrome-toolbar"; const char kShowChromeToolbar[] = "show-chrome-toolbar";
const char kInitialShowState[] = "initial-show-state"; const char kInitialShowState[] = "initial-show-state";
const char kUseDefaultPopup[] = "use-default-popup"; const char kUseDefaultPopup[] = "use-default-popup";

View File

@ -37,9 +37,13 @@ extern const char kAlwaysOnTop[];
extern const char kHideTopMenu[]; extern const char kHideTopMenu[];
extern const char kSslClientCertificate[]; extern const char kSslClientCertificate[];
extern const char kCRLSetsPath[]; extern const char kCRLSetsPath[];
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
extern const char kLoadExtension[]; extern const char kLoadExtension[];
#endif
extern const char kNoActivate[]; extern const char kNoActivate[];
#if !defined(DISABLE_ALLOY_BOOTSTRAP)
extern const char kEnableChromeRuntime[]; extern const char kEnableChromeRuntime[];
#endif
extern const char kShowChromeToolbar[]; extern const char kShowChromeToolbar[];
extern const char kInitialShowState[]; extern const char kInitialShowState[];
extern const char kUseDefaultPopup[]; extern const char kUseDefaultPopup[];