| 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 29953fdc7c55..89dd4e61f66f 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 |
| @@ -21,6 +21,7 @@ |
| #include "base/task/thread_pool.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/data_reduction_proxy/data_reduction_proxy_chrome_settings.h" |
| #include "chrome/browser/data_reduction_proxy/data_reduction_proxy_chrome_settings_factory.h" |
| @@ -28,6 +29,7 @@ |
| #include "chrome/browser/profiles/profile_manager.h" |
| #include "chrome/browser/sync/profile_sync_service_factory.h" |
| #include "chrome/common/channel_info.h" |
| +#include "chrome/common/chrome_switches.h" |
| #include "components/prefs/pref_service.h" |
| #include "components/sync/driver/about_sync_util.h" |
| #include "components/sync/driver/sync_service.h" |
| @@ -274,7 +276,11 @@ void ChromeInternalLogSource::Fetch(SysLogsSourceCallback callback) { |
| response->emplace(kOsVersionTag, os_version); |
| #endif |
| |
| +#if !BUILDFLAG(ENABLE_CEF) |
| + // CEF should avoid loading ProfileSyncServiceFactory which depends on a lot |
| + // of unnecessary Chrome-specific factories. |
| PopulateSyncLogs(response.get()); |
| +#endif |
| PopulateExtensionInfoLogs(response.get()); |
| PopulatePowerApiLogs(response.get()); |
| PopulateDataReductionProxyLogs(response.get()); |
| @@ -364,6 +370,12 @@ void ChromeInternalLogSource::PopulateExtensionInfoLogs( |
| if (!profile) |
| return; |
| |
| + // CEF should avoid accessing ExtensionRegistry when extensions are disabled. |
| + if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kDisableExtensions)) { |
| + return; |
| + } |
| + |
| extensions::ExtensionRegistry* extension_registry = |
| extensions::ExtensionRegistry::Get(profile); |
| std::string extensions_list; |
| @@ -453,6 +465,8 @@ void ChromeInternalLogSource::PopulateArcPolicyStatus( |
| #if defined(OS_WIN) |
| void ChromeInternalLogSource::PopulateUsbKeyboardDetected( |
| SystemLogsResponse* response) { |
| + // The below call may result in some DLLs being loaded. |
| + base::ScopedAllowBlockingForTesting allow_blocking; |
| std::string reason; |
| bool result = |
| base::win::IsKeyboardPresentOnSlate(ui::GetHiddenWindow(), &reason); |
| diff --git chrome/browser/memory_details.cc chrome/browser/memory_details.cc |
| index d42895d9db3f..74a6d407bbcd 100644 |
| --- chrome/browser/memory_details.cc |
| +++ chrome/browser/memory_details.cc |
| @@ -18,6 +18,7 @@ |
| #include "base/task/thread_pool.h" |
| #include "build/build_config.h" |
| #include "chrome/browser/profiles/profile.h" |
| +#include "chrome/common/chrome_switches.h" |
| #include "components/nacl/common/nacl_process_type.h" |
| #include "components/strings/grit/components_strings.h" |
| #include "content/public/browser/browser_child_process_host_iterator.h" |
| @@ -250,8 +251,11 @@ void MemoryDetails::CollectChildInfoOnUIThread() { |
| |
| #if BUILDFLAG(ENABLE_EXTENSIONS) |
| // Determine if this is an extension process. |
| + // CEF should avoid accessing ExtensionRegistry when extensions are disabled. |
| bool process_is_for_extensions = false; |
| - if (render_process_host) { |
| + if (render_process_host && |
| + !base::CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kDisableExtensions)) { |
| content::BrowserContext* context = |
| render_process_host->GetBrowserContext(); |
| extensions::ExtensionRegistry* extension_registry = |