mirror of
				https://bitbucket.org/chromiumembedded/cef
				synced 2025-06-05 21:39:12 +02:00 
			
		
		
		
	- Mac: 13.3 SDK (Xcode 14.3) is now supported (see https://crbug.com/1431897). - Mac: Removed UnderlayOpenGLHostingWindow which is no longer used.
		
			
				
	
	
		
			159 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| diff --git chrome/browser/profiles/off_the_record_profile_impl.cc chrome/browser/profiles/off_the_record_profile_impl.cc
 | |
| index ec0e1b7be7209..ea85965f1f2c9 100644
 | |
| --- chrome/browser/profiles/off_the_record_profile_impl.cc
 | |
| +++ chrome/browser/profiles/off_the_record_profile_impl.cc
 | |
| @@ -664,7 +664,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 5d6a5b65698c0..964541b2343de 100644
 | |
| --- chrome/browser/profiles/profile.h
 | |
| +++ chrome/browser/profiles/profile.h
 | |
| @@ -100,6 +100,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();
 | |
|  
 | |
| @@ -507,6 +511,8 @@ class Profile : public content::BrowserContext {
 | |
|  
 | |
|    base::WeakPtr<Profile> GetWeakPtr();
 | |
|  
 | |
| +  void NotifyOffTheRecordProfileCreated(Profile* off_the_record);
 | |
| +
 | |
|   protected:
 | |
|    // Creates an OffTheRecordProfile which points to this Profile.
 | |
|    static std::unique_ptr<Profile> CreateOffTheRecordProfile(
 | |
| @@ -518,7 +524,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 57d728da590da..fc57b690011d6 100644
 | |
| --- chrome/browser/profiles/profile_impl.cc
 | |
| +++ chrome/browser/profiles/profile_impl.cc
 | |
| @@ -1036,7 +1036,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 2b0e6098334bf..9d7fdfc8401aa 100644
 | |
| --- chrome/browser/profiles/profile_manager.cc
 | |
| +++ chrome/browser/profiles/profile_manager.cc
 | |
| @@ -395,7 +395,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir)
 | |
|                            base::Unretained(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 60c9fd19fe15b..2a3e317d9c240 100644
 | |
| --- chrome/browser/profiles/profile_manager.h
 | |
| +++ chrome/browser/profiles/profile_manager.h
 | |
| @@ -130,7 +130,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);
 | |
| @@ -174,7 +174,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 884e79cd54e0d..ed47d9a7d1bb4 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"
 | |
| @@ -49,8 +50,10 @@ RendererUpdater::RendererUpdater(Profile* profile)
 | |
|            BoundSessionCookieRefreshServiceFactory::GetForProfile(profile))
 | |
|  #endif
 | |
|  {
 | |
| +  if (!cef::IsAlloyRuntimeEnabled()) {
 | |
|    identity_manager_observation_.Observe(
 | |
|        IdentityManagerFactory::GetForProfile(original_profile_));
 | |
| +  }
 | |
|  
 | |
|  #if BUILDFLAG(IS_CHROMEOS_ASH)
 | |
|    oauth2_login_manager_ =
 |