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 6a943ceb13bc..44db1b8a2371 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 @@ -19,6 +19,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 "chrome/common/pref_names.h" #include "components/prefs/pref_service.h" #include "components/sync/driver/about_sync_util.h" @@ -267,6 +268,10 @@ void ChromeInternalLogSource::Fetch(SysLogsSourceCallback callback) { } void ChromeInternalLogSource::PopulateSyncLogs(SystemLogsResponse* response) { + // CEF should avoid loading ProfileSyncServiceFactory which depends on a lot + // of unnecessary Chrome-specific factories. + return; + // We are only interested in sync logs for the primary user profile. Profile* profile = ProfileManager::GetPrimaryUserProfile(); if (!profile || !ProfileSyncServiceFactory::HasProfileSyncService(profile)) @@ -309,6 +314,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; diff --git chrome/browser/memory_details.cc chrome/browser/memory_details.cc index 14b789a35c34..19a1f340a101 100644 --- chrome/browser/memory_details.cc +++ chrome/browser/memory_details.cc @@ -17,6 +17,7 @@ #include "base/task/post_task.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" @@ -249,8 +250,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 = diff --git content/browser/resource_context_impl.cc content/browser/resource_context_impl.cc index 261e9343b8a2..0fe566c705a4 100644 --- content/browser/resource_context_impl.cc +++ content/browser/resource_context_impl.cc @@ -56,6 +56,10 @@ URLDataManagerBackend* GetURLDataManagerForResourceContext( context->GetUserData(kURLDataManagerBackendKeyName)); } +const void* GetURLDataManagerBackendUserDataKey() { + return kURLDataManagerBackendKeyName; +} + void InitializeResourceContext(BrowserContext* browser_context) { ResourceContext* resource_context = browser_context->GetResourceContext(); diff --git content/browser/resource_context_impl.h content/browser/resource_context_impl.h index 903cc543a242..5bd30ae82974 100644 --- content/browser/resource_context_impl.h +++ content/browser/resource_context_impl.h @@ -28,6 +28,8 @@ CONTENT_EXPORT StreamContext* GetStreamContextForResourceContext( URLDataManagerBackend* GetURLDataManagerForResourceContext( ResourceContext* context); +CONTENT_EXPORT const void* GetURLDataManagerBackendUserDataKey(); + // Initialize the above data on the ResourceContext from a given BrowserContext. CONTENT_EXPORT void InitializeResourceContext(BrowserContext* browser_context); diff --git content/browser/webui/url_data_manager.cc content/browser/webui/url_data_manager.cc index a7653565bbf0..7ebf6dd857c9 100644 --- content/browser/webui/url_data_manager.cc +++ content/browser/webui/url_data_manager.cc @@ -157,6 +157,11 @@ void URLDataManager::UpdateWebUIDataSource( ->UpdateWebUIDataSource(source_name, std::move(update)); } +// static +const void* URLDataManager::GetUserDataKey() { + return kURLDataManagerKeyName; +} + // static bool URLDataManager::IsScheduledForDeletion( const URLDataSourceImpl* data_source) { diff --git content/browser/webui/url_data_manager.h content/browser/webui/url_data_manager.h index 95cff69e1b42..7fd849867829 100644 --- content/browser/webui/url_data_manager.h +++ content/browser/webui/url_data_manager.h @@ -69,6 +69,8 @@ class CONTENT_EXPORT URLDataManager : public base::SupportsUserData::Data { const std::string& source_name, std::unique_ptr update); + static const void* GetUserDataKey(); + private: friend class URLDataSourceImpl; friend struct DeleteURLDataSource;