From a1e07fa54b28e886ddec19c303d3f6127bc33a74 Mon Sep 17 00:00:00 2001 From: uazo <29201891+uazo@users.noreply.github.com> Date: Mon, 24 May 2021 12:06:11 +0200 Subject: [PATCH] Allow open new tabs and save as link in always incognito mode (#1165) --- .../Add-an-always-incognito-mode.patch | 78 +++++++------------ 1 file changed, 27 insertions(+), 51 deletions(-) diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index 240b9fff..373745bc 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -10,10 +10,10 @@ Enable incognito custom tabs and fix crashes for incognito/custom tab intents (c chrome/android/chrome_java_sources.gni | 1 + .../java/res/xml/privacy_preferences.xml | 5 ++ .../AlwaysIncognitoLinkInterceptor.java | 80 +++++++++++++++++++ - .../chrome/browser/ChromeTabbedActivity.java | 8 +- + .../chrome/browser/ChromeTabbedActivity.java | 6 +- .../chrome/browser/app/ChromeActivity.java | 4 + .../AppMenuPropertiesDelegateImpl.java | 6 ++ - .../ChromeContextMenuPopulator.java | 28 +++++-- + .../ChromeContextMenuPopulator.java | 9 ++- .../CustomTabActivityLifecycleUmaTracker.java | 25 ------ .../CustomTabIntentDataProvider.java | 5 +- .../browser/init/StartupTabPreloader.java | 14 +++- @@ -23,7 +23,7 @@ Enable incognito custom tabs and fix crashes for incognito/custom tab intents (c .../webapps/WebappIntentDataProvider.java | 14 ++++ .../flags/android/chrome_feature_list.cc | 2 +- .../strings/android_chrome_strings.grd | 7 ++ - 16 files changed, 187 insertions(+), 39 deletions(-) + 16 files changed, 171 insertions(+), 34 deletions(-) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni @@ -160,15 +160,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct int index = savedInstanceState != null ? savedInstanceState.getInt(WINDOW_INDEX, 0) : 0; mNextTabPolicySupplier = new ChromeNextTabPolicySupplier(mOverviewModeBehaviorSupplier); -@@ -1715,7 +1717,7 @@ public class ChromeTabbedActivity extends ChromeActivity> buildContextMenu() { +@@ -337,6 +339,10 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { boolean hasSaveImage = false; -@@ -345,14 +359,18 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { - && UrlUtilities.isAcceptedScheme(mParams.getUrl().getSpec())) { - if (mMode == ContextMenuMode.NORMAL) { - if (TabUiFeatureUtilities.ENABLE_TAB_GROUP_AUTO_CREATION.getValue()) { -- linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB)); -+ if (canOpenNewTab()) linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB)); - } else { - if (TabUiFeatureUtilities.showContextMenuOpenNewTabInGroupItemFirst()) { -- linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB_IN_GROUP)); -- linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB)); -+ if (canOpenNewTab()) { -+ linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB_IN_GROUP)); -+ linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB)); -+ } - } else { -- linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB)); -- linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB_IN_GROUP)); -+ if (canOpenNewTab()) { -+ linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB)); -+ linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB_IN_GROUP)); -+ } + mShowEphemeralTabNewLabel = null; + ++ boolean always_incognito = ++ ContextUtils.getAppSharedPreferences().getBoolean( ++ AlwaysIncognitoLinkInterceptor.PREF_ALWAYS_INCOGNITO, false); ++ + List> groupedItems = new ArrayList<>(); + + if (mParams.isAnchor()) { +@@ -355,6 +361,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { + linkGroup.add(createListItem(Item.OPEN_IN_NEW_TAB_IN_GROUP)); } } ++ if (!mItemDelegate.isIncognito() && mItemDelegate.isIncognitoSupported()) { + linkGroup.add(createListItem(Item.OPEN_IN_INCOGNITO_TAB)); + } +@@ -377,7 +384,7 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { + } + } + if (FirstRunStatus.getFirstRunFlowComplete()) { +- if (!mItemDelegate.isIncognito() ++ if ((always_incognito || !mItemDelegate.isIncognito()) + && UrlUtilities.isDownloadableScheme(mParams.getLinkUrl())) { + linkGroup.add(createListItem(Item.SAVE_LINK_AS)); + } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivityLifecycleUmaTracker.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivityLifecycleUmaTracker.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivityLifecycleUmaTracker.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivityLifecycleUmaTracker.java