diff --git a/build/patches/Add-custom-tab-intents-privacy-option.patch b/build/patches/Add-custom-tab-intents-privacy-option.patch
index 6a7b8f87..59dfd6cf 100644
--- a/build/patches/Add-custom-tab-intents-privacy-option.patch
+++ b/build/patches/Add-custom-tab-intents-privacy-option.patch
@@ -12,23 +12,26 @@ See also: https://github.com/bromite/bromite/issues/1474
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
- .../java/res/xml/privacy_preferences.xml | 10 ++++++++
- .../browser/LaunchIntentDispatcher.java | 21 ++++++++++++++++
+ .../java/res/xml/privacy_preferences.xml | 15 ++++++
+ .../browser/LaunchIntentDispatcher.java | 21 ++++++++
+ .../CustomTabIntentDataProvider.java | 4 +-
.../customtabs/CustomTabsConnection.java | 1 +
- .../IncognitoCustomTabIntentDataProvider.java | 14 +++++++++++
- .../privacy/settings/PrivacySettings.java | 24 +++++++++++++++++++
- .../chrome/browser/tab/TabAssociatedApp.java | 6 ++++-
- .../strings/android_chrome_strings.grd | 14 +++++++++++
- .../OriginVerifier.java | 5 ++++
+ .../IncognitoCustomTabIntentDataProvider.java | 14 ++++++
+ .../privacy/settings/PrivacySettings.java | 50 +++++++++++++++++++
+ .../browser/flags/ChromeFeatureList.java | 2 +
+ .../chrome/browser/tab/TabAssociatedApp.java | 6 ++-
+ ...Add-custom-tab-intents-privacy-option.grdp | 25 ++++++++++
+ .../OriginVerifier.java | 5 ++
.../core/common/language_experiments.cc | 1 +
.../add-custom-tab-intents-privacy-option.inc | 1 +
- 10 files changed, 96 insertions(+), 1 deletion(-)
+ 12 files changed, 143 insertions(+), 2 deletions(-)
+ create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-custom-tab-intents-privacy-option.grdp
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
-@@ -63,6 +63,16 @@ found in the LICENSE file.
+@@ -63,6 +63,21 @@ found in the LICENSE file.
android:key="cromite_flags"
android:title="@string/cromite_flags_title"
app:url="@string/cromite_flags_url" />
@@ -38,6 +41,11 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
+ android:summary="@string/allow_custom_tab_intents_summary"
+ android:defaultValue="false" />
+
++ ", "", servicesLink));
}
@@ -176,7 +214,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String key = preference.getKey();
-@@ -328,6 +334,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
+@@ -328,6 +343,31 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
} else if (PREF_SEARCH_SUGGESTIONS.equals(key)) {
UserPrefs.get(getProfile())
.setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue);
@@ -184,6 +222,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
+ sharedPreferencesEditor.putBoolean(PREF_ALLOW_CUSTOM_TAB_INTENTS, (boolean)newValue);
+ sharedPreferencesEditor.apply();
++ // check default browser
++ if ((boolean)newValue) {
++ ResolveInfo info = PackageManagerUtils.resolveDefaultWebBrowserActivity();
++ if (info == null || info.match == 0 ||
++ !TextUtils.equals(ContextUtils.getApplicationContext().getPackageName(),
++ info.activityInfo.packageName)) {
++ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
++ RoleManager roleManager = (RoleManager) getContext().getSystemService(Context.ROLE_SERVICE);
++ Intent intent = roleManager.createRequestRoleIntent(RoleManager.ROLE_BROWSER);
++ startActivityForResult(intent, 0);
++ } else {
++ Intent intent = new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS);
++ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
++ IntentUtils.safeStartActivity(getContext(), intent);
++ }
++ }
++ }
+ } else if (PREF_OPEN_EXTERNAL_LINKS_INCOGNITO.equals(key)) {
+ SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit();
+ sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue);
@@ -191,7 +246,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
}
return true;
}
-@@ -350,6 +364,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
+@@ -350,6 +390,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment
UserPrefs.get(getProfile()).getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED));
}
@@ -208,6 +263,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
Preference doNotTrackPref = findPreference(PREF_DO_NOT_TRACK);
if (doNotTrackPref != null) {
doNotTrackPref.setSummary(
+diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
++++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+@@ -638,6 +638,7 @@ public abstract class ChromeFeatureList {
+ public static final CachedFlag sLogoPolishAnimationKillSwitch =
+ newCachedFlag(LOGO_POLISH_ANIMATION_KILL_SWITCH, true);
+ public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, true);
++ public static final CachedFlag sMayLaunchurlUsesSeparateStoragePartition = newCachedFlag(MAYLAUNCHURL_USES_SEPARATE_STORAGE_PARTITION, false);
+ public static final CachedFlag sMostVisitedTilesReselect =
+ newCachedFlag(MOST_VISITED_TILES_RESELECT, false);
+ public static final CachedFlag sMultiInstanceApplicationStatusCleanup =
+@@ -768,6 +769,7 @@ public abstract class ChromeFeatureList {
+ sLogoPolish,
+ sLogoPolishAnimationKillSwitch,
+ sMagicStackAndroid,
++ sMayLaunchurlUsesSeparateStoragePartition,
+ sMostVisitedTilesReselect,
+ sMultiInstanceApplicationStatusCleanup,
+ sNavBarColorMatchesTabBackground,
diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java
--- a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java
+++ b/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAssociatedApp.java
@@ -224,30 +298,36 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAsso
String packageName = ContextUtils.getApplicationContext().getPackageName();
return tab.getLaunchType() == TabLaunchType.FROM_EXTERNAL_APP
&& !TextUtils.equals(app.getAppId(), packageName);
-diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
---- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
-+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
-@@ -5696,6 +5696,20 @@ To change this setting, BEGIN_LINKdelete the Chrome d
-
- Resume
-
-+
-+
-+ Allow custom tab intents
-+
-+
-+ Allow applications to open custom tab intents, similar to webview.
-+
-+
-+
+diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-custom-tab-intents-privacy-option.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-custom-tab-intents-privacy-option.grdp
+new file mode 100644
+--- /dev/null
++++ b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-custom-tab-intents-privacy-option.grdp
+@@ -0,0 +1,25 @@
++
++
++
++
++ Allow custom tab intents.
++
++
++ Allow applications to open custom tab intents, similar to webview. To work, Cromite must be set as the default browser.
++
++
++
++ Use ephemeral mode for CCT
++
++
++ Use a separate storage partition when opening custom tab intents
++
++
++
++
+ Open external links in incognito
-+
-+
++
++
+ Force the opening of all external links in incognito mode and uses the CCT ephemeral mode. Caution: there is only one incognito profile.
-+
-
-
- Show your Chrome activity in Digital Wellbeing?
++
++
diff --git a/components/content_relationship_verification/android/java/src/org/chromium/components/content_relationship_verification/OriginVerifier.java b/components/content_relationship_verification/android/java/src/org/chromium/components/content_relationship_verification/OriginVerifier.java
--- a/components/content_relationship_verification/android/java/src/org/chromium/components/content_relationship_verification/OriginVerifier.java
+++ b/components/content_relationship_verification/android/java/src/org/chromium/components/content_relationship_verification/OriginVerifier.java