mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-03-03 19:37:47 +01:00
171 lines
7.4 KiB
Diff
171 lines
7.4 KiB
Diff
diff --git chrome/browser/profiles/off_the_record_profile_impl.cc chrome/browser/profiles/off_the_record_profile_impl.cc
|
|
index 4e361cfd4ec86..bd156f6b76696 100644
|
|
--- chrome/browser/profiles/off_the_record_profile_impl.cc
|
|
+++ chrome/browser/profiles/off_the_record_profile_impl.cc
|
|
@@ -644,7 +644,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 94aafe60eb458..ebc3ecc2585a3 100644
|
|
--- chrome/browser/profiles/profile.cc
|
|
+++ chrome/browser/profiles/profile.cc
|
|
@@ -81,6 +81,7 @@ base::LazyInstance<std::set<content::BrowserContext*>>::Leaky
|
|
|
|
namespace {
|
|
|
|
+const char kCEFOTRProfileIDPrefix[] = "CEF::BrowserContext";
|
|
const char kDevToolsOTRProfileIDPrefix[] = "Devtools::BrowserContext";
|
|
const char kMediaRouterOTRProfileIDPrefix[] = "MediaRouter::Presentation";
|
|
|
|
@@ -94,6 +95,8 @@ bool Profile::OTRProfileID::AllowsBrowserWindows() const {
|
|
// DevTools::BrowserContext and MediaRouter::Presentation are an
|
|
// exception to this ban.
|
|
return *this == PrimaryID() ||
|
|
+ base::StartsWith(profile_id_, kCEFOTRProfileIDPrefix,
|
|
+ base::CompareCase::SENSITIVE) ||
|
|
base::StartsWith(profile_id_, kDevToolsOTRProfileIDPrefix,
|
|
base::CompareCase::SENSITIVE) ||
|
|
base::StartsWith(profile_id_, kMediaRouterOTRProfileIDPrefix,
|
|
@@ -115,6 +118,16 @@ Profile::OTRProfileID Profile::OTRProfileID::CreateUnique(
|
|
base::GUID::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 a2b145ece628e..41afec2cfa4cb 100644
|
|
--- chrome/browser/profiles/profile.h
|
|
+++ chrome/browser/profiles/profile.h
|
|
@@ -120,6 +120,10 @@ class Profile : public content::BrowserContext {
|
|
// Creates a unique OTR profile id with the given profile id prefix.
|
|
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();
|
|
|
|
@@ -524,6 +528,8 @@ class Profile : public content::BrowserContext {
|
|
|
|
virtual void RecordMainFrameNavigation() = 0;
|
|
|
|
+ void NotifyOffTheRecordProfileCreated(Profile* off_the_record);
|
|
+
|
|
protected:
|
|
void set_is_guest_profile(bool is_guest_profile) {
|
|
is_guest_profile_ = is_guest_profile;
|
|
@@ -543,8 +549,6 @@ class Profile : public content::BrowserContext {
|
|
static PrefStore* CreateExtensionPrefStore(Profile*,
|
|
bool incognito_pref_store);
|
|
|
|
- void NotifyOffTheRecordProfileCreated(Profile* off_the_record);
|
|
-
|
|
// Returns whether the user has signed in this profile to an account.
|
|
virtual bool IsSignedIn() = 0;
|
|
|
|
diff --git chrome/browser/profiles/profile_impl.cc chrome/browser/profiles/profile_impl.cc
|
|
index 14417b3a65486..9f0fc4b5316bc 100644
|
|
--- chrome/browser/profiles/profile_impl.cc
|
|
+++ chrome/browser/profiles/profile_impl.cc
|
|
@@ -979,7 +979,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 b470744df3fa1..8a4ecc623feab 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)
|
|
base::Unretained(this)));
|
|
#endif
|
|
|
|
- if (ProfileShortcutManager::IsFeatureEnabled() && !user_data_dir_.empty())
|
|
+ if (!user_data_dir_.empty() && ProfileShortcutManager::IsFeatureEnabled())
|
|
profile_shortcut_manager_ = ProfileShortcutManager::Create(this);
|
|
}
|
|
|
|
diff --git chrome/browser/profiles/profile_manager.h chrome/browser/profiles/profile_manager.h
|
|
index 88ee84697998c..40ba18c66127e 100644
|
|
--- chrome/browser/profiles/profile_manager.h
|
|
+++ chrome/browser/profiles/profile_manager.h
|
|
@@ -116,7 +116,7 @@ class ProfileManager : public Profile::Delegate {
|
|
// acceptable. Returns null if creation of 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);
|
|
@@ -150,7 +150,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.
|
|
@@ -161,7 +161,7 @@ class ProfileManager : public Profile::Delegate {
|
|
// stored in Local State, hand back the Default profile.
|
|
// TODO(https://crbug.com/1195201): Remove `user_data_dir` parameter since it
|
|
// always must match `user_data_dir_` field.
|
|
- Profile* GetLastUsedProfile(const base::FilePath& user_data_dir);
|
|
+ virtual Profile* GetLastUsedProfile(const base::FilePath& user_data_dir);
|
|
|
|
// Get the path of the last used profile, or if that's undefined, the default
|
|
// profile.
|
|
diff --git chrome/browser/profiles/renderer_updater.cc chrome/browser/profiles/renderer_updater.cc
|
|
index 8920c217f0b26..f4864793c5a29 100644
|
|
--- chrome/browser/profiles/renderer_updater.cc
|
|
+++ chrome/browser/profiles/renderer_updater.cc
|
|
@@ -8,6 +8,7 @@
|
|
|
|
#include "base/bind.h"
|
|
#include "build/chromeos_buildflags.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/signin/identity_manager_factory.h"
|
|
@@ -58,8 +59,12 @@ void GetGuestViewDefaultContentSettingRules(
|
|
|
|
RendererUpdater::RendererUpdater(Profile* profile)
|
|
: profile_(profile), identity_manager_observer_(this) {
|
|
+ if (cef::IsAlloyRuntimeEnabled()) {
|
|
+ identity_manager_ = nullptr;
|
|
+ } else {
|
|
identity_manager_ = IdentityManagerFactory::GetForProfile(profile);
|
|
identity_manager_observer_.Add(identity_manager_);
|
|
+ }
|
|
#if BUILDFLAG(IS_CHROMEOS_ASH)
|
|
oauth2_login_manager_ =
|
|
chromeos::OAuth2LoginManagerFactory::GetForProfile(profile_);
|