Disable-smart-selection-by-default.patch 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. From: csagan5 <32685696+csagan5@users.noreply.github.com>
  2. Date: Fri, 24 Jan 2020 19:17:22 +0100
  3. Subject: Disable smart selection by default
  4. Allow web search in incognito mode (reverts
  5. commit 48d4ae54f7565c429bf29cd63806aee5d7e93e69)
  6. Partial revert of da1d809c003749846cb4ade8c11b6d038e44416b to restore
  7. the ChromeSmartSelection feature flag.
  8. Notice that re-enabling smart selection would make incognito mode potentially
  9. leak information through the TextClassifier set by OEM, if any
  10. ---
  11. .../contextualsearch/SelectionClientManager.java | 4 +++-
  12. .../browser/flags/android/chrome_feature_list.cc | 4 ++++
  13. .../browser/flags/android/chrome_feature_list.h | 1 +
  14. .../chrome/browser/flags/ChromeFeatureList.java | 1 +
  15. .../selection/SelectionPopupControllerImpl.java | 2 +-
  16. testing/variations/fieldtrial_testing_config.json | 15 +++++++++++++++
  17. 6 files changed, 25 insertions(+), 2 deletions(-)
  18. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/SelectionClientManager.java b/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/SelectionClientManager.java
  19. --- a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/SelectionClientManager.java
  20. +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/SelectionClientManager.java
  21. @@ -10,6 +10,7 @@ import android.view.textclassifier.TextClassifier;
  22. import androidx.annotation.Nullable;
  23. import androidx.annotation.VisibleForTesting;
  24. +import org.chromium.chrome.browser.flags.ChromeFeatureList;
  25. import org.chromium.content_public.browser.SelectionClient;
  26. import org.chromium.content_public.browser.SelectionEventProcessor;
  27. import org.chromium.content_public.browser.SelectionPopupController;
  28. @@ -44,7 +45,8 @@ public class SelectionClientManager {
  29. * @param webContents The {@link WebContents} that will show popups for this client.
  30. */
  31. SelectionClientManager(WebContents webContents) {
  32. - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
  33. + if (ChromeFeatureList.isEnabled(ChromeFeatureList.CHROME_SMART_SELECTION)
  34. + && Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
  35. assert webContents != null;
  36. mOptionalSelectionClient = SelectionClient.createSmartSelectionClient(webContents);
  37. SelectionPopupController controller =
  38. diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
  39. --- a/chrome/browser/flags/android/chrome_feature_list.cc
  40. +++ b/chrome/browser/flags/android/chrome_feature_list.cc
  41. @@ -182,6 +182,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
  42. &kCCTClientDataHeader,
  43. &kCCTExternalLinkHandling,
  44. &kCCTIncognito,
  45. + &kChromeSmartSelection,
  46. &kCCTIncognitoAvailableToThirdParty,
  47. &kCCTPostMessageAPI,
  48. &kCCTRedirectPreconnect,
  49. @@ -500,6 +501,9 @@ const base::Feature kChromeSharingHubLaunchAdjacent{
  50. const base::Feature kChromeSurveyNextAndroid{"ChromeSurveyNextAndroid",
  51. base::FEATURE_ENABLED_BY_DEFAULT};
  52. +const base::Feature kChromeSmartSelection{"ChromeSmartSelection",
  53. + base::FEATURE_DISABLED_BY_DEFAULT};
  54. +
  55. const base::Feature kCommandLineOnNonRooted{"CommandLineOnNonRooted",
  56. base::FEATURE_DISABLED_BY_DEFAULT};
  57. diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
  58. --- a/chrome/browser/flags/android/chrome_feature_list.h
  59. +++ b/chrome/browser/flags/android/chrome_feature_list.h
  60. @@ -49,6 +49,7 @@ extern const base::Feature kCCTResourcePrefetch;
  61. extern const base::Feature kDontAutoHideBrowserControls;
  62. extern const base::Feature kChromeShareLongScreenshot;
  63. extern const base::Feature kChromeShareScreenshot;
  64. +extern const base::Feature kChromeSmartSelection;
  65. extern const base::Feature kChromeSharingHub;
  66. extern const base::Feature kChromeSharingHubLaunchAdjacent;
  67. extern const base::Feature kChromeSurveyNextAndroid;
  68. 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
  69. --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
  70. +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
  71. @@ -255,6 +255,7 @@ public abstract class ChromeFeatureList {
  72. public static final String CCT_EXTERNAL_LINK_HANDLING = "CCTExternalLinkHandling";
  73. public static final String CCT_POST_MESSAGE_API = "CCTPostMessageAPI";
  74. public static final String CCT_REDIRECT_PRECONNECT = "CCTRedirectPreconnect";
  75. + public static final String CHROME_SMART_SELECTION = "ChromeSmartSelection";
  76. public static final String CCT_REMOVE_REMOTE_VIEW_IDS = "CCTRemoveRemoteViewIds";
  77. public static final String CCT_RESIZABLE_90_MAXIMUM_HEIGHT = "CCTResizable90MaximumHeight";
  78. public static final String CCT_RESIZABLE_ALLOW_RESIZE_BY_USER_GESTURE =
  79. diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
  80. --- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
  81. +++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java
  82. @@ -839,7 +839,7 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper
  83. menu.removeItem(R.id.select_action_menu_share);
  84. }
  85. - if (isFocusedNodeEditable() || isIncognito()
  86. + if (isFocusedNodeEditable()
  87. || !isSelectActionModeAllowed(MENU_ITEM_WEB_SEARCH)) {
  88. menu.removeItem(R.id.select_action_menu_web_search);
  89. }
  90. diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json
  91. --- a/testing/variations/fieldtrial_testing_config.json
  92. +++ b/testing/variations/fieldtrial_testing_config.json
  93. @@ -1975,6 +1975,21 @@
  94. ]
  95. }
  96. ],
  97. + "ChromeSmartSelection": [
  98. + {
  99. + "platforms": [
  100. + "android"
  101. + ],
  102. + "experiments": [
  103. + {
  104. + "name": "Enabled_Launch",
  105. + "enable_features": [
  106. + "ChromeSmartSelection"
  107. + ]
  108. + }
  109. + ]
  110. + }
  111. + ],
  112. "ChromeStart": [
  113. {
  114. "platforms": [
  115. --
  116. 2.20.1