2016-08-04 14:37:53 +02:00
|
|
|
diff --git chrome/browser/profiles/incognito_helpers.cc chrome/browser/profiles/incognito_helpers.cc
|
|
|
|
index 6155e96..2125a436 100644
|
|
|
|
--- chrome/browser/profiles/incognito_helpers.cc
|
|
|
|
+++ chrome/browser/profiles/incognito_helpers.cc
|
|
|
|
@@ -8,13 +8,35 @@
|
|
|
|
|
|
|
|
namespace chrome {
|
|
|
|
|
|
|
|
+namespace {
|
|
|
|
+BrowserContextIncognitoHelper* g_helper = nullptr;
|
|
|
|
+} // namespace
|
|
|
|
+
|
|
|
|
+void SetBrowserContextIncognitoHelper(BrowserContextIncognitoHelper* helper) {
|
|
|
|
+ g_helper = helper;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
content::BrowserContext* GetBrowserContextRedirectedInIncognito(
|
|
|
|
content::BrowserContext* context) {
|
|
|
|
+ if (g_helper) {
|
|
|
|
+ content::BrowserContext* new_context =
|
|
|
|
+ g_helper->GetBrowserContextRedirectedInIncognito(context);
|
|
|
|
+ if (new_context)
|
|
|
|
+ return new_context;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
return static_cast<Profile*>(context)->GetOriginalProfile();
|
|
|
|
}
|
|
|
|
|
|
|
|
content::BrowserContext* GetBrowserContextOwnInstanceInIncognito(
|
|
|
|
content::BrowserContext* context) {
|
|
|
|
+ if (g_helper) {
|
|
|
|
+ content::BrowserContext* new_context =
|
|
|
|
+ g_helper->GetBrowserContextOwnInstanceInIncognito(context);
|
|
|
|
+ if (new_context)
|
|
|
|
+ return new_context;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
return context;
|
|
|
|
}
|
|
|
|
|
|
|
|
diff --git chrome/browser/profiles/incognito_helpers.h chrome/browser/profiles/incognito_helpers.h
|
|
|
|
index 4b43013..169ca47 100644
|
|
|
|
--- chrome/browser/profiles/incognito_helpers.h
|
|
|
|
+++ chrome/browser/profiles/incognito_helpers.h
|
|
|
|
@@ -11,6 +11,19 @@ class BrowserContext;
|
|
|
|
|
|
|
|
namespace chrome {
|
|
|
|
|
|
|
|
+class BrowserContextIncognitoHelper {
|
|
|
|
+ public:
|
|
|
|
+ virtual content::BrowserContext* GetBrowserContextRedirectedInIncognito(
|
|
|
|
+ content::BrowserContext* context) = 0;
|
|
|
|
+ virtual content::BrowserContext* GetBrowserContextOwnInstanceInIncognito(
|
|
|
|
+ content::BrowserContext* context) = 0;
|
|
|
|
+ protected:
|
|
|
|
+ virtual ~BrowserContextIncognitoHelper() {}
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+// Allow CEF to hook the below methods.
|
|
|
|
+void SetBrowserContextIncognitoHelper(BrowserContextIncognitoHelper* helper);
|
|
|
|
+
|
|
|
|
// Returns the original browser context even for Incognito contexts.
|
|
|
|
content::BrowserContext* GetBrowserContextRedirectedInIncognito(
|
|
|
|
content::BrowserContext* context);
|
2016-07-18 23:22:22 +02:00
|
|
|
diff --git chrome/browser/profiles/profile_manager.h chrome/browser/profiles/profile_manager.h
|
2017-04-20 21:28:17 +02:00
|
|
|
index 385f9c3..3d126bd 100644
|
2016-07-18 23:22:22 +02:00
|
|
|
--- chrome/browser/profiles/profile_manager.h
|
|
|
|
+++ chrome/browser/profiles/profile_manager.h
|
2017-01-23 18:36:54 +01:00
|
|
|
@@ -89,7 +89,7 @@ class ProfileManager : public base::NonThreadSafe,
|
2016-08-04 14:37:53 +02:00
|
|
|
// 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 total number of profiles available on this machine.
|
|
|
|
size_t GetNumberOfProfiles();
|
2017-01-23 18:36:54 +01:00
|
|
|
@@ -117,7 +117,7 @@ class ProfileManager : public base::NonThreadSafe,
|
2016-07-18 23:22:22 +02:00
|
|
|
|
|
|
|
// 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.
|
2017-01-23 18:36:54 +01:00
|
|
|
@@ -126,7 +126,7 @@ class ProfileManager : public base::NonThreadSafe,
|
2016-11-07 20:14:09 +01:00
|
|
|
// Get the Profile last used (the Profile to which owns the most recently
|
|
|
|
// focused window) with this Chrome build. If no signed profile has been
|
|
|
|
// stored in Local State, hand back the Default profile.
|
|
|
|
- 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.
|