Loading build/patches/Add-an-always-incognito-mode.patch +80 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../remote_suggestions_service_factory.cc | 5 + .../bookmarks/android/bookmark_bridge.cc | 7 + .../host_content_settings_map_factory.cc | 22 ++- .../webstore_private/webstore_private_api.cc | 26 ++- chrome/browser/history/history_tab_helper.cc | 20 ++ chrome/browser/history/history_tab_helper.h | 10 +- .../android/offline_page_bridge.cc | 11 +- Loading Loading @@ -87,7 +88,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-an-always-incognito-mode.inc | 1 + .../add-an-always-incognito-mode.inc | 3 + .../add-an-always-incognito-mode.inc | 1 + 68 files changed, 785 insertions(+), 101 deletions(-) 69 files changed, 806 insertions(+), 106 deletions(-) create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java Loading Loading @@ -1352,6 +1353,84 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c #if BUILDFLAG(ENABLE_EXTENSIONS) // These must be registered before before the HostSettings are passed over to // the IOThread. Simplest to do this on construction. diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc --- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc +++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc @@ -83,6 +83,12 @@ #include "chrome/browser/safe_browsing/safe_browsing_service.h" #endif +#if BUILDFLAG(IS_ANDROID) +#include "chrome/common/pref_names.h" +#include "components/prefs/pref_registry_simple.h" +#include "components/prefs/pref_service.h" +#endif + static_assert(BUILDFLAG(ENABLE_EXTENSIONS_CORE)); using safe_browsing::SafeBrowsingNavigationObserverManager; @@ -223,6 +229,16 @@ const int kExtensionReferrerUserGestureLimit = 2; WebstorePrivateApi::Delegate* test_delegate = nullptr; +Profile* GetProfileInIncognito(Profile* profile) { +#if BUILDFLAG(IS_ANDROID) + if (profile->GetOriginalProfile() + ->GetPrefs()->GetBoolean(prefs::kAlwaysIncognitoEnabled)) { + return profile->GetOriginalProfile(); + } +#endif + return profile; +} + // We allow the web store to set a string containing login information when a // purchase is made, so that when a user logs into sync with a different // account we can recognize the situation. The Get function returns the login if @@ -429,7 +445,7 @@ WebstorePrivateBeginInstallWithManifest3Function::Run() { params_ = Params::Create(args()); EXTENSION_FUNCTION_VALIDATE(params_); - profile_ = Profile::FromBrowserContext(browser_context()); + profile_ = GetProfileInIncognito(Profile::FromBrowserContext(browser_context())); if (!crx_file::id_util::IdIsValid(details().id)) { return RespondNow(BuildResponse(api::webstore_private::Result::kInvalidId, @@ -965,7 +981,7 @@ void WebstorePrivateBeginInstallWithManifest3Function:: DCHECK(extension); DCHECK(contents); - Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); + Profile* profile = GetProfileInIncognito(Profile::FromBrowserContext(contents->GetBrowserContext())); std::string message_from_admin = ExtensionManagementFactory::GetForBrowserContext(profile) @@ -1001,7 +1017,7 @@ WebstorePrivateCompleteInstallFunction::Run() { std::optional<CompleteInstall::Params> params = CompleteInstall::Params::Create(args()); EXTENSION_FUNCTION_VALIDATE(params); - Profile* const profile = Profile::FromBrowserContext(browser_context()); + Profile* const profile = GetProfileInIncognito(Profile::FromBrowserContext(browser_context())); if (profile->IsGuestSession() || profile->IsOffTheRecord()) { return RespondNow(Error(kIncognitoError)); } @@ -1319,7 +1335,7 @@ ExtensionFunction::ResponseValue WebstorePrivateGetExtensionStatusFunction::BuildResponseWithoutManifest( const ExtensionId& extension_id) { ExtensionInstallStatus status = GetWebstoreExtensionInstallStatus( - extension_id, Profile::FromBrowserContext(browser_context())); + extension_id, GetProfileInIncognito(Profile::FromBrowserContext(browser_context()))); api::webstore_private::ExtensionInstallStatus api_status = ConvertExtensionInstallStatusForAPI(status); return ArgumentList(GetExtensionStatus::Results::Create(api_status)); @@ -1333,7 +1349,7 @@ void WebstorePrivateGetExtensionStatusFunction::OnManifestParsed( return; } - Profile* const profile = Profile::FromBrowserContext(browser_context()); + Profile* const profile = GetProfileInIncognito(Profile::FromBrowserContext(browser_context())); if (!ExtensionsBrowserClient::Get()->IsValidContext(profile)) { Respond(Error(kWebstoreUserCancelledError)); return; diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/history/history_tab_helper.cc --- a/chrome/browser/history/history_tab_helper.cc +++ b/chrome/browser/history/history_tab_helper.cc Loading Loading
build/patches/Add-an-always-incognito-mode.patch +80 −1 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../remote_suggestions_service_factory.cc | 5 + .../bookmarks/android/bookmark_bridge.cc | 7 + .../host_content_settings_map_factory.cc | 22 ++- .../webstore_private/webstore_private_api.cc | 26 ++- chrome/browser/history/history_tab_helper.cc | 20 ++ chrome/browser/history/history_tab_helper.h | 10 +- .../android/offline_page_bridge.cc | 11 +- Loading Loading @@ -87,7 +88,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-an-always-incognito-mode.inc | 1 + .../add-an-always-incognito-mode.inc | 3 + .../add-an-always-incognito-mode.inc | 1 + 68 files changed, 785 insertions(+), 101 deletions(-) 69 files changed, 806 insertions(+), 106 deletions(-) create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java Loading Loading @@ -1352,6 +1353,84 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c #if BUILDFLAG(ENABLE_EXTENSIONS) // These must be registered before before the HostSettings are passed over to // the IOThread. Simplest to do this on construction. diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc --- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc +++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc @@ -83,6 +83,12 @@ #include "chrome/browser/safe_browsing/safe_browsing_service.h" #endif +#if BUILDFLAG(IS_ANDROID) +#include "chrome/common/pref_names.h" +#include "components/prefs/pref_registry_simple.h" +#include "components/prefs/pref_service.h" +#endif + static_assert(BUILDFLAG(ENABLE_EXTENSIONS_CORE)); using safe_browsing::SafeBrowsingNavigationObserverManager; @@ -223,6 +229,16 @@ const int kExtensionReferrerUserGestureLimit = 2; WebstorePrivateApi::Delegate* test_delegate = nullptr; +Profile* GetProfileInIncognito(Profile* profile) { +#if BUILDFLAG(IS_ANDROID) + if (profile->GetOriginalProfile() + ->GetPrefs()->GetBoolean(prefs::kAlwaysIncognitoEnabled)) { + return profile->GetOriginalProfile(); + } +#endif + return profile; +} + // We allow the web store to set a string containing login information when a // purchase is made, so that when a user logs into sync with a different // account we can recognize the situation. The Get function returns the login if @@ -429,7 +445,7 @@ WebstorePrivateBeginInstallWithManifest3Function::Run() { params_ = Params::Create(args()); EXTENSION_FUNCTION_VALIDATE(params_); - profile_ = Profile::FromBrowserContext(browser_context()); + profile_ = GetProfileInIncognito(Profile::FromBrowserContext(browser_context())); if (!crx_file::id_util::IdIsValid(details().id)) { return RespondNow(BuildResponse(api::webstore_private::Result::kInvalidId, @@ -965,7 +981,7 @@ void WebstorePrivateBeginInstallWithManifest3Function:: DCHECK(extension); DCHECK(contents); - Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); + Profile* profile = GetProfileInIncognito(Profile::FromBrowserContext(contents->GetBrowserContext())); std::string message_from_admin = ExtensionManagementFactory::GetForBrowserContext(profile) @@ -1001,7 +1017,7 @@ WebstorePrivateCompleteInstallFunction::Run() { std::optional<CompleteInstall::Params> params = CompleteInstall::Params::Create(args()); EXTENSION_FUNCTION_VALIDATE(params); - Profile* const profile = Profile::FromBrowserContext(browser_context()); + Profile* const profile = GetProfileInIncognito(Profile::FromBrowserContext(browser_context())); if (profile->IsGuestSession() || profile->IsOffTheRecord()) { return RespondNow(Error(kIncognitoError)); } @@ -1319,7 +1335,7 @@ ExtensionFunction::ResponseValue WebstorePrivateGetExtensionStatusFunction::BuildResponseWithoutManifest( const ExtensionId& extension_id) { ExtensionInstallStatus status = GetWebstoreExtensionInstallStatus( - extension_id, Profile::FromBrowserContext(browser_context())); + extension_id, GetProfileInIncognito(Profile::FromBrowserContext(browser_context()))); api::webstore_private::ExtensionInstallStatus api_status = ConvertExtensionInstallStatusForAPI(status); return ArgumentList(GetExtensionStatus::Results::Create(api_status)); @@ -1333,7 +1349,7 @@ void WebstorePrivateGetExtensionStatusFunction::OnManifestParsed( return; } - Profile* const profile = Profile::FromBrowserContext(browser_context()); + Profile* const profile = GetProfileInIncognito(Profile::FromBrowserContext(browser_context())); if (!ExtensionsBrowserClient::Get()->IsValidContext(profile)) { Respond(Error(kWebstoreUserCancelledError)); return; diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/history/history_tab_helper.cc --- a/chrome/browser/history/history_tab_helper.cc +++ b/chrome/browser/history/history_tab_helper.cc Loading