[Android] Create and use feature list for //components/external_intents

This CL eliminates the last //chrome dependence of
ExternalNavigationHandler.java, on ChromeFeatureList.java. To do so it
componentizes the one feature that ExternalNavigationHandler uses into
//components/external_intents via a minimal
ExternalIntentsFeatureList.java.

Bug: 1031465
Change-Id: If3c81a1d03516a4d71a98126c939255f74296616
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2096559
Commit-Queue: Colin Blundell <[email protected]>
Reviewed-by: Henrique Nakashima <[email protected]>
Reviewed-by: Michael Thiessen <[email protected]>
Cr-Commit-Position: refs/heads/master@{#749130}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
index 377ee98d..756ed39 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationHandler.java
@@ -26,9 +26,9 @@
 import org.chromium.base.Log;
 import org.chromium.base.metrics.RecordHistogram;
 import org.chromium.base.metrics.RecordUserAction;
-import org.chromium.chrome.browser.flags.ChromeFeatureList;
 import org.chromium.components.embedder_support.util.UrlConstants;
 import org.chromium.components.embedder_support.util.UrlUtilities;
+import org.chromium.components.external_intents.ExternalIntentsFeatureList;
 import org.chromium.components.external_intents.ExternalIntentsSwitches;
 import org.chromium.components.external_intents.ExternalNavigationParams;
 import org.chromium.components.external_intents.RedirectHandler;
@@ -361,8 +361,8 @@
     /** Wrapper of check against the feature to support overriding for testing. */
     @VisibleForTesting
     boolean blockExternalFormRedirectsWithoutGesture() {
-        return ChromeFeatureList.isEnabled(
-                ChromeFeatureList.INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE);
+        return ExternalIntentsFeatureList.isEnabled(
+                ExternalIntentsFeatureList.INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE);
     }
 
     /**
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 0a877e9..b328704e 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2999,6 +2999,7 @@
       "//components/crash/android:crash_android",
       "//components/embedder_support/android:util",
       "//components/embedder_support/android:web_contents_delegate",
+      "//components/external_intents/android",
       "//components/feed:buildflags",
       "//components/feed:feature_list",
       "//components/invalidation/impl:feature_list",
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS
index 63cbb23..44c8186 100644
--- a/chrome/browser/DEPS
+++ b/chrome/browser/DEPS
@@ -98,6 +98,7 @@
   "+components/embedder_support",
   "+components/encrypted_messages",
   "+components/exo",
+  "+components/external_intents",
   "+components/favicon_base",
   "+components/favicon/content",
   "+components/favicon/core",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 87f484ca..32071ea 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -177,6 +177,7 @@
 #if defined(OS_ANDROID)
 #include "chrome/browser/android/explore_sites/explore_sites_feature.h"
 #include "chrome/browser/flags/android/chrome_feature_list.h"
+#include "components/external_intents/android/external_intents_feature_list.h"
 #else  // OS_ANDROID
 #include "chrome/browser/media/router/media_router_feature.h"
 #endif  // OS_ANDROID
@@ -4861,7 +4862,7 @@
      flag_descriptions::kIntentBlockExternalFormRedirectsNoGestureDescription,
      kOsAndroid,
      FEATURE_VALUE_TYPE(
-         chrome::android::kIntentBlockExternalFormRedirectsNoGesture)},
+         external_intents::kIntentBlockExternalFormRedirectsNoGesture)},
     {"recover-from-never-save-android",
      flag_descriptions::kRecoverFromNeverSaveAndroidName,
      flag_descriptions::kRecoverFromNeverSaveAndroidDescription, kOsAndroid,
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
index f3e6c311..67ec332 100644
--- a/chrome/browser/flags/android/chrome_feature_list.cc
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
@@ -157,7 +157,6 @@
     &kHorizontalTabSwitcherAndroid,
     &kImmersiveUiMode,
     &kInlineUpdateFlow,
-    &kIntentBlockExternalFormRedirectsNoGesture,
     &kKitKatSupported,
     &kNewPhotoPicker,
     &kNotificationSuspender,
@@ -458,10 +457,6 @@
 const base::Feature kInlineUpdateFlow{"InlineUpdateFlow",
                                       base::FEATURE_DISABLED_BY_DEFAULT};
 
-const base::Feature kIntentBlockExternalFormRedirectsNoGesture{
-    "IntentBlockExternalFormRedirectsNoGesture",
-    base::FEATURE_DISABLED_BY_DEFAULT};
-
 const base::Feature kKitKatSupported{"KitKatSupported",
                                      base::FEATURE_DISABLED_BY_DEFAULT};
 
diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
index 70aa2fc..21815f7 100644
--- a/chrome/browser/flags/android/chrome_feature_list.h
+++ b/chrome/browser/flags/android/chrome_feature_list.h
@@ -78,7 +78,6 @@
 extern const base::Feature kImmersiveUiMode;
 extern const base::Feature kImprovedA2HS;
 extern const base::Feature kInlineUpdateFlow;
-extern const base::Feature kIntentBlockExternalFormRedirectsNoGesture;
 extern const base::Feature kKitKatSupported;
 extern const base::Feature kLanguagesPreference;
 extern const base::Feature kNewPhotoPicker;
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
index 597c893..b14928cb5 100644
--- 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
@@ -310,8 +310,6 @@
             "ImprovedCookieControlsForThirdPartyCookieBlocking";
     public static final String INLINE_UPDATE_FLOW = "InlineUpdateFlow";
     public static final String INSTALLABLE_AMBIENT_BADGE_INFOBAR = "InstallableAmbientBadgeInfoBar";
-    public static final String INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE =
-            "IntentBlockExternalFormRedirectsNoGesture";
     public static final String INTEREST_FEED_CONTENT_SUGGESTIONS = "InterestFeedContentSuggestions";
     public static final String INTEREST_FEED_FEEDBACK = "InterestFeedFeedback";
     public static final String KITKAT_SUPPORTED = "KitKatSupported";