| diff --git chrome/browser/profiles/off_the_record_profile_impl.cc chrome/browser/profiles/off_the_record_profile_impl.cc |
| index 48e30b2833a05..2d848247b9bce 100644 |
| --- chrome/browser/profiles/off_the_record_profile_impl.cc |
| +++ chrome/browser/profiles/off_the_record_profile_impl.cc |
| @@ -652,7 +652,9 @@ std::unique_ptr<Profile> Profile::CreateOffTheRecordProfile( |
| #endif |
| if (!profile) |
| profile = std::make_unique<OffTheRecordProfileImpl>(parent, otr_profile_id); |
| - profile->Init(); |
| + // With CEF we want to delay initialization. |
| + if (!otr_profile_id.IsUniqueForCEF()) |
| + profile->Init(); |
| return std::move(profile); |
| } |
| |
| diff --git chrome/browser/profiles/profile.cc chrome/browser/profiles/profile.cc |
| index 6cffe941b26f9..3e6223ab0d423 100644 |
| --- chrome/browser/profiles/profile.cc |
| +++ chrome/browser/profiles/profile.cc |
| @@ -84,6 +84,7 @@ base::LazyInstance<std::set<content::BrowserContext*>>::Leaky |
| |
| namespace { |
| |
| +const char kCEFOTRProfileIDPrefix[] = "CEF::BrowserContext"; |
| const char kDevToolsOTRProfileIDPrefix[] = "Devtools::BrowserContext"; |
| const char kMediaRouterOTRProfileIDPrefix[] = "MediaRouter::Presentation"; |
| const char kTestOTRProfileIDPrefix[] = "Test::OTR"; |
| @@ -104,6 +105,8 @@ bool Profile::OTRProfileID::AllowsBrowserWindows() const { |
| // DevTools::BrowserContext, MediaRouter::Presentation, and |
| // CaptivePortal::Signin are exceptions to this ban. |
| if (*this == PrimaryID() || |
| + base::StartsWith(profile_id_, kCEFOTRProfileIDPrefix, |
| + base::CompareCase::SENSITIVE) || |
| base::StartsWith(profile_id_, kDevToolsOTRProfileIDPrefix, |
| base::CompareCase::SENSITIVE) || |
| base::StartsWith(profile_id_, kMediaRouterOTRProfileIDPrefix, |
| @@ -141,6 +144,16 @@ Profile::OTRProfileID Profile::OTRProfileID::CreateUnique( |
| base::Uuid::GenerateRandomV4().AsLowercaseString().c_str())); |
| } |
| |
| +// static |
| +Profile::OTRProfileID Profile::OTRProfileID::CreateUniqueForCEF() { |
| + return CreateUnique(kCEFOTRProfileIDPrefix); |
| +} |
| + |
| +bool Profile::OTRProfileID::IsUniqueForCEF() const { |
| + return base::StartsWith(profile_id_, kCEFOTRProfileIDPrefix, |
| + base::CompareCase::SENSITIVE); |
| +} |
| + |
| // static |
| Profile::OTRProfileID Profile::OTRProfileID::CreateUniqueForDevTools() { |
| return CreateUnique(kDevToolsOTRProfileIDPrefix); |
| diff --git chrome/browser/profiles/profile.h chrome/browser/profiles/profile.h |
| index ee1675aa1ecc9..cb526d1aba30d 100644 |
| --- chrome/browser/profiles/profile.h |
| +++ chrome/browser/profiles/profile.h |
| @@ -104,6 +104,10 @@ class Profile : public content::BrowserContext { |
| // be applicable to run. Please see crbug.com/1098697#c3 for more details. |
| static OTRProfileID CreateUnique(const std::string& profile_id_prefix); |
| |
| + // Creates a unique OTR profile id to be used for CEF browser contexts. |
| + static OTRProfileID CreateUniqueForCEF(); |
| + bool IsUniqueForCEF() const; |
| + |
| // Creates a unique OTR profile id to be used for DevTools browser contexts. |
| static OTRProfileID CreateUniqueForDevTools(); |
| |
| @@ -528,6 +532,8 @@ class Profile : public content::BrowserContext { |
| return instant_service_; |
| } |
| |
| + void NotifyOffTheRecordProfileCreated(Profile* off_the_record); |
| + |
| protected: |
| // Creates an OffTheRecordProfile which points to this Profile. |
| static std::unique_ptr<Profile> CreateOffTheRecordProfile( |
| @@ -539,7 +545,6 @@ class Profile : public content::BrowserContext { |
| static PrefStore* CreateExtensionPrefStore(Profile*, |
| bool incognito_pref_store); |
| |
| - void NotifyOffTheRecordProfileCreated(Profile* off_the_record); |
| void NotifyProfileInitializationComplete(); |
| |
| // Returns whether the user has signed in this profile to an account. |
| diff --git chrome/browser/profiles/profile_impl.cc chrome/browser/profiles/profile_impl.cc |
| index 90859a99248a4..26fec83939559 100644 |
| --- chrome/browser/profiles/profile_impl.cc |
| +++ chrome/browser/profiles/profile_impl.cc |
| @@ -1023,7 +1023,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id, |
| |
| otr_profiles_[otr_profile_id] = std::move(otr_profile); |
| |
| - NotifyOffTheRecordProfileCreated(raw_otr_profile); |
| + // With CEF we want to delay initialization. |
| + if (!otr_profile_id.IsUniqueForCEF()) |
| + NotifyOffTheRecordProfileCreated(raw_otr_profile); |
| |
| return raw_otr_profile; |
| } |
| diff --git chrome/browser/profiles/profile_manager.cc chrome/browser/profiles/profile_manager.cc |
| index d403a5b78dfbf..85620c16dbf6e 100644 |
| --- chrome/browser/profiles/profile_manager.cc |
| +++ chrome/browser/profiles/profile_manager.cc |
| @@ -435,7 +435,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir) |
| profile_manager_android_ = std::make_unique<ProfileManagerAndroid>(this); |
| #endif |
| |
| - if (ProfileShortcutManager::IsFeatureEnabled() && !user_data_dir_.empty()) |
| + if (!user_data_dir_.empty() && ProfileShortcutManager::IsFeatureEnabled()) |
| profile_shortcut_manager_ = ProfileShortcutManager::Create(this); |
| |
| zombie_metrics_timer_.Start(FROM_HERE, base::Minutes(30), this, |
| diff --git chrome/browser/profiles/profile_manager.h chrome/browser/profiles/profile_manager.h |
| index 5f471502c07a8..6a28e9452a359 100644 |
| --- chrome/browser/profiles/profile_manager.h |
| +++ chrome/browser/profiles/profile_manager.h |
| @@ -134,7 +134,7 @@ class ProfileManager : public Profile::Delegate { |
| // acceptable. Returns nullptr if loading the new profile fails. |
| // TODO(bauerb): Migrate calls from other code to `GetProfileByPath()`, then |
| // make this method private. |
| - Profile* GetProfile(const base::FilePath& profile_dir); |
| + virtual Profile* GetProfile(const base::FilePath& profile_dir); |
| |
| // Returns regular or off-the-record profile given its profile key. |
| static Profile* GetProfileFromProfileKey(ProfileKey* profile_key); |
| @@ -178,7 +178,7 @@ class ProfileManager : public Profile::Delegate { |
| |
| // Returns true if the profile pointer is known to point to an existing |
| // profile. |
| - bool IsValidProfile(const void* profile); |
| + virtual bool IsValidProfile(const void* profile); |
| |
| // Returns the directory where the first created profile is stored, |
| // relative to the user data directory currently in use. |
| diff --git chrome/browser/profiles/renderer_updater.cc chrome/browser/profiles/renderer_updater.cc |
| index 421a3a60d308a..b89123a708f79 100644 |
| --- chrome/browser/profiles/renderer_updater.cc |
| +++ chrome/browser/profiles/renderer_updater.cc |
| @@ -9,6 +9,7 @@ |
| #include "base/functional/bind.h" |
| #include "base/functional/callback.h" |
| #include "build/chromeos_buildflags.h" |
| +#include "cef/libcef/features/runtime.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/profiles/profile.h" |
| @@ -46,11 +47,14 @@ RendererUpdater::RendererUpdater(Profile* profile) |
| #if BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS) |
| , |
| bound_session_cookie_refresh_service_( |
| + cef::IsAlloyRuntimeEnabled() ? nullptr : |
| BoundSessionCookieRefreshServiceFactory::GetForProfile(profile)) |
| #endif |
| { |
| + if (!cef::IsAlloyRuntimeEnabled()) { |
| identity_manager_observation_.Observe( |
| IdentityManagerFactory::GetForProfile(original_profile_)); |
| + } |
| |
| #if BUILDFLAG(IS_CHROMEOS_ASH) |
| oauth2_login_manager_ = |
| diff --git chrome/browser/profiles/renderer_updater_factory.cc chrome/browser/profiles/renderer_updater_factory.cc |
| index ed5b366aa47ab..58ebe795e4636 100644 |
| --- chrome/browser/profiles/renderer_updater_factory.cc |
| +++ chrome/browser/profiles/renderer_updater_factory.cc |
| @@ -4,6 +4,7 @@ |
| |
| #include "chrome/browser/profiles/renderer_updater_factory.h" |
| |
| +#include "cef/libcef/features/runtime.h" |
| #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/profiles/renderer_updater.h" |
| @@ -25,7 +26,9 @@ RendererUpdaterFactory::RendererUpdaterFactory() |
| DependsOn(IdentityManagerFactory::GetInstance()); |
| DependsOn(HostContentSettingsMapFactory::GetInstance()); |
| #if BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS) |
| + if (!cef::IsAlloyRuntimeEnabled()) { |
| DependsOn(BoundSessionCookieRefreshServiceFactory::GetInstance()); |
| + } |
| #endif // BUILDFLAG(ENABLE_BOUND_SESSION_CREDENTIALS) |
| } |
| |