diff --git chrome/app/chrome_main_delegate.cc chrome/app/chrome_main_delegate.cc index 313975f42c0d..ee7f27dab6b7 100644 --- chrome/app/chrome_main_delegate.cc +++ chrome/app/chrome_main_delegate.cc @@ -27,6 +27,7 @@ #include "base/time/time.h" #include "base/trace_event/trace_event_impl.h" #include "build/build_config.h" +#include "cef/libcef/features/runtime.h" #include "chrome/browser/chrome_content_browser_client.h" #include "chrome/browser/chrome_resource_bundle_helper.h" #include "chrome/browser/defaults.h" @@ -379,6 +380,8 @@ struct MainFunction { // Initializes the user data dir. Must be called before InitializeLocalState(). void InitializeUserDataDir(base::CommandLine* command_line) { + if (cef::IsChromeRuntimeEnabled()) + return; #if defined(OS_WIN) // Reach out to chrome_elf for the truth on the user data directory. // Note that in tests, this links to chrome_elf_test_stubs. @@ -624,7 +627,9 @@ void ChromeMainDelegate::PostFieldTrialInitialization() { } #if defined(OS_WIN) + if (!cef::IsChromeRuntimeEnabled()) { SetUpExtendedCrashReporting(is_browser_process); + } base::sequence_manager::internal::ThreadControllerPowerMonitor:: InitializeOnMainThread(); #endif @@ -906,6 +911,7 @@ void ChromeMainDelegate::PreSandboxStartup() { std::string process_type = command_line.GetSwitchValueASCII(switches::kProcessType); + if (!cef::IsChromeRuntimeEnabled()) { crash_reporter::InitializeCrashKeys(); #if defined(OS_POSIX) @@ -916,6 +922,7 @@ void ChromeMainDelegate::PreSandboxStartup() { InitMacCrashReporter(command_line, process_type); SetUpInstallerPreferences(command_line); #endif + } // !cef::IsChromeRuntimeEnabled() #if defined(OS_WIN) child_process_logging::Init(); @@ -1040,6 +1047,7 @@ void ChromeMainDelegate::PreSandboxStartup() { locale; } + if (!cef::IsChromeRuntimeEnabled()) { #if defined(OS_POSIX) && !defined(OS_MAC) // Zygote needs to call InitCrashReporter() in RunZygote(). if (process_type != service_manager::switches::kZygoteProcess) { @@ -1072,6 +1080,7 @@ void ChromeMainDelegate::PreSandboxStartup() { // After all the platform Breakpads have been initialized, store the command // line for crash reporting. crash_keys::SetCrashKeysFromCommandLine(command_line); + } // !cef::IsChromeRuntimeEnabled() #if BUILDFLAG(ENABLE_PDF) MaybeInitializeGDI(); @@ -1170,6 +1179,7 @@ void ChromeMainDelegate::ZygoteForked() { SetUpProfilingShutdownHandler(); } + if (!cef::IsChromeRuntimeEnabled()) { // Needs to be called after we have chrome::DIR_USER_DATA. BrowserMain sets // this up for the browser process in a different manner. const base::CommandLine* command_line = @@ -1186,6 +1196,7 @@ void ChromeMainDelegate::ZygoteForked() { // Reset the command line for the newly spawned process. crash_keys::SetCrashKeysFromCommandLine(*command_line); + } // !cef::IsChromeRuntimeEnabled() } #endif // defined(OS_LINUX) || defined(OS_CHROMEOS) diff --git chrome/browser/chrome_browser_main.cc chrome/browser/chrome_browser_main.cc index 68a92d3924f0..280ef9019551 100644 --- chrome/browser/chrome_browser_main.cc +++ chrome/browser/chrome_browser_main.cc @@ -49,6 +49,7 @@ #include "build/build_config.h" #include "build/lacros_buildflags.h" #include "cc/base/switches.h" +#include "cef/libcef/features/runtime.h" #include "chrome/browser/about_flags.h" #include "chrome/browser/active_use_util.h" #include "chrome/browser/after_startup_task_utils.h" @@ -892,8 +893,10 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { #if !defined(OS_ANDROID) // Create the RunLoop for MainMessageLoopRun() to use, and pass a copy of // its QuitClosure to the BrowserProcessImpl to call when it is time to exit. + // CEF with the Chrome runtime will create and manage its own RunLoop. DCHECK(!g_run_loop); - g_run_loop = new base::RunLoop; + if (!cef::IsChromeRuntimeEnabled()) + g_run_loop = new base::RunLoop; // These members must be initialized before returning from this function. // Android doesn't use StartupBrowserCreator. @@ -1608,11 +1611,13 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // This step is costly and is already measured in // Startup.StartupBrowserCreator_Start. // See the comment above for an explanation of |process_command_line|. + // Bypass StartupBrowserCreator with CEF where |g_run_loop| is nullptr. const bool started = + !g_run_loop || !process_command_line || browser_creator_->Start(parsed_command_line(), base::FilePath(), profile_, last_opened_profiles); - if (started) { + if (started && g_run_loop) { #if defined(OS_WIN) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) // Initialize autoupdate timer. Timer callback costs basically nothing // when browser is not in persistent mode, so it's OK to let it ride on diff --git chrome/browser/notifications/notification_platform_bridge_mac.mm chrome/browser/notifications/notification_platform_bridge_mac.mm index ad52e63ed83a..6b16ee3ccc96 100644 --- chrome/browser/notifications/notification_platform_bridge_mac.mm +++ chrome/browser/notifications/notification_platform_bridge_mac.mm @@ -24,6 +24,7 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "base/system/sys_info.h" +#include "cef/libcef/features/runtime.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/notifications/notification_common.h" #include "chrome/browser/notifications/notification_display_service_impl.h" @@ -651,6 +652,12 @@ getDisplayedAlertsForProfileId:(NSString*)profileId - (id)serviceProxy { id proxy = [_xpcConnection remoteObjectProxy]; + // Skip exception port configuration when running CEF with crash reporting disabled. + if (!_setExceptionPort && cef::IsChromeRuntimeEnabled() && + !cef::IsCrashReportingEnabled()) { + _setExceptionPort = YES; + } + if (!_setExceptionPort) { base::mac::ScopedMachSendRight exceptionPort( crash_reporter::GetCrashpadClient().GetHandlerMachPort()); diff --git ui/gtk/select_file_dialog_impl_kde.cc ui/gtk/select_file_dialog_impl_kde.cc index 464aa72e1d47..30a621dea6fc 100644 --- ui/gtk/select_file_dialog_impl_kde.cc +++ ui/gtk/select_file_dialog_impl_kde.cc @@ -6,6 +6,8 @@ #include #include +#undef Success + #include #include