2021-04-09 20:34:45 +02:00
|
|
|
diff --git chrome/browser/profiles/off_the_record_profile_impl.cc chrome/browser/profiles/off_the_record_profile_impl.cc
|
2024-10-24 17:05:31 +02:00
|
|
|
index 0b7e60d6742de..94af5f4d226bf 100644
|
2021-04-09 20:34:45 +02:00
|
|
|
--- chrome/browser/profiles/off_the_record_profile_impl.cc
|
|
|
|
+++ chrome/browser/profiles/off_the_record_profile_impl.cc
|
2024-10-24 17:05:31 +02:00
|
|
|
@@ -643,7 +643,9 @@ std::unique_ptr<Profile> Profile::CreateOffTheRecordProfile(
|
2021-04-09 20:34:45 +02:00
|
|
|
#endif
|
|
|
|
if (!profile)
|
2021-04-21 00:52:34 +02:00
|
|
|
profile = std::make_unique<OffTheRecordProfileImpl>(parent, otr_profile_id);
|
2021-04-09 20:34:45 +02:00
|
|
|
- profile->Init();
|
|
|
|
+ // With CEF we want to delay initialization.
|
|
|
|
+ if (!otr_profile_id.IsUniqueForCEF())
|
|
|
|
+ profile->Init();
|
|
|
|
return std::move(profile);
|
|
|
|
}
|
|
|
|
|
2021-04-07 00:09:45 +02:00
|
|
|
diff --git chrome/browser/profiles/profile.cc chrome/browser/profiles/profile.cc
|
2024-10-24 17:05:31 +02:00
|
|
|
index 89254771117da..eb35e4595d1ad 100644
|
2021-04-07 00:09:45 +02:00
|
|
|
--- chrome/browser/profiles/profile.cc
|
|
|
|
+++ chrome/browser/profiles/profile.cc
|
2024-10-24 17:05:31 +02:00
|
|
|
@@ -81,6 +81,7 @@ base::LazyInstance<std::set<content::BrowserContext*>>::Leaky
|
2021-04-07 00:09:45 +02:00
|
|
|
|
|
|
|
namespace {
|
|
|
|
|
|
|
|
+const char kCEFOTRProfileIDPrefix[] = "CEF::BrowserContext";
|
|
|
|
const char kDevToolsOTRProfileIDPrefix[] = "Devtools::BrowserContext";
|
|
|
|
const char kMediaRouterOTRProfileIDPrefix[] = "MediaRouter::Presentation";
|
2021-06-04 03:34:56 +02:00
|
|
|
const char kTestOTRProfileIDPrefix[] = "Test::OTR";
|
2024-10-24 17:05:31 +02:00
|
|
|
@@ -101,6 +102,8 @@ bool Profile::OTRProfileID::AllowsBrowserWindows() const {
|
2022-10-17 19:27:40 +02:00
|
|
|
// 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,
|
2024-10-24 17:05:31 +02:00
|
|
|
@@ -138,6 +141,16 @@ Profile::OTRProfileID Profile::OTRProfileID::CreateUnique(
|
2023-04-26 21:55:59 +02:00
|
|
|
base::Uuid::GenerateRandomV4().AsLowercaseString().c_str()));
|
2021-04-07 00:09:45 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
+// static
|
|
|
|
+Profile::OTRProfileID Profile::OTRProfileID::CreateUniqueForCEF() {
|
|
|
|
+ return CreateUnique(kCEFOTRProfileIDPrefix);
|
|
|
|
+}
|
2021-04-09 20:34:45 +02:00
|
|
|
+
|
|
|
|
+bool Profile::OTRProfileID::IsUniqueForCEF() const {
|
|
|
|
+ return base::StartsWith(profile_id_, kCEFOTRProfileIDPrefix,
|
|
|
|
+ base::CompareCase::SENSITIVE);
|
|
|
|
+}
|
2021-04-07 00:09:45 +02:00
|
|
|
+
|
|
|
|
// static
|
|
|
|
Profile::OTRProfileID Profile::OTRProfileID::CreateUniqueForDevTools() {
|
|
|
|
return CreateUnique(kDevToolsOTRProfileIDPrefix);
|
|
|
|
diff --git chrome/browser/profiles/profile.h chrome/browser/profiles/profile.h
|
2024-10-24 17:05:31 +02:00
|
|
|
index f79b0cd32e4fb..c797e6659a43f 100644
|
2021-04-07 00:09:45 +02:00
|
|
|
--- chrome/browser/profiles/profile.h
|
|
|
|
+++ chrome/browser/profiles/profile.h
|
2024-05-23 03:52:35 +02:00
|
|
|
@@ -94,6 +94,10 @@ class Profile : public content::BrowserContext {
|
2021-06-04 03:34:56 +02:00
|
|
|
// be applicable to run. Please see crbug.com/1098697#c3 for more details.
|
2021-04-07 00:09:45 +02:00
|
|
|
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();
|
2021-04-09 20:34:45 +02:00
|
|
|
+ bool IsUniqueForCEF() const;
|
2021-04-07 00:09:45 +02:00
|
|
|
+
|
|
|
|
// Creates a unique OTR profile id to be used for DevTools browser contexts.
|
|
|
|
static OTRProfileID CreateUniqueForDevTools();
|
|
|
|
|
2024-10-24 17:05:31 +02:00
|
|
|
@@ -503,6 +507,9 @@ class Profile : public content::BrowserContext {
|
2024-06-14 19:01:45 +02:00
|
|
|
static Profile* FromJavaObject(const jni_zero::JavaRef<jobject>& obj);
|
|
|
|
jni_zero::ScopedJavaLocalRef<jobject> GetJavaObject() const;
|
|
|
|
#endif // BUILDFLAG(IS_ANDROID)
|
|
|
|
+
|
2021-04-09 20:34:45 +02:00
|
|
|
+ void NotifyOffTheRecordProfileCreated(Profile* off_the_record);
|
|
|
|
+
|
|
|
|
protected:
|
2021-06-04 03:34:56 +02:00
|
|
|
// Creates an OffTheRecordProfile which points to this Profile.
|
|
|
|
static std::unique_ptr<Profile> CreateOffTheRecordProfile(
|
2024-10-24 17:05:31 +02:00
|
|
|
@@ -514,7 +521,6 @@ class Profile : public content::BrowserContext {
|
2021-04-09 20:34:45 +02:00
|
|
|
static PrefStore* CreateExtensionPrefStore(Profile*,
|
|
|
|
bool incognito_pref_store);
|
|
|
|
|
|
|
|
- void NotifyOffTheRecordProfileCreated(Profile* off_the_record);
|
2023-01-30 18:43:54 +01:00
|
|
|
void NotifyProfileInitializationComplete();
|
2021-04-09 20:34:45 +02:00
|
|
|
|
2023-01-30 18:43:54 +01:00
|
|
|
// Returns whether the user has signed in this profile to an account.
|
2021-04-09 20:34:45 +02:00
|
|
|
diff --git chrome/browser/profiles/profile_impl.cc chrome/browser/profiles/profile_impl.cc
|
2024-10-24 17:05:31 +02:00
|
|
|
index 26667af1eb648..79bb0289f6150 100644
|
2021-04-09 20:34:45 +02:00
|
|
|
--- chrome/browser/profiles/profile_impl.cc
|
|
|
|
+++ chrome/browser/profiles/profile_impl.cc
|
2024-10-24 17:05:31 +02:00
|
|
|
@@ -1012,7 +1012,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id,
|
2021-04-09 20:34:45 +02:00
|
|
|
|
|
|
|
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;
|
|
|
|
}
|