Mark arc-native-bridge-experiment as non-expiring

Bug: None
Test: None
Change-Id: Ife43b9b735044d9eabde1ca5574d252c919f5691
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1768828
Reviewed-by: Avi Drissman <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Commit-Queue: Lev Rumyantsev <[email protected]>
Cr-Commit-Position: refs/heads/master@{#690835}
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 50837efd..d6b936d 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2531,10 +2531,9 @@
      flag_descriptions::kArcFilePickerExperimentName,
      flag_descriptions::kArcFilePickerExperimentDescription, kOsCrOS,
      FEATURE_VALUE_TYPE(arc::kFilePickerExperimentFeature)},
-    {"arc-native-bridge-experiment",
-     flag_descriptions::kArcNativeBridgeExperimentName,
-     flag_descriptions::kArcNativeBridgeExperimentDescription, kOsCrOS,
-     FEATURE_VALUE_TYPE(arc::kNativeBridgeExperimentFeature)},
+    {"arc-native-bridge-toggle", flag_descriptions::kArcNativeBridgeToggleName,
+     flag_descriptions::kArcNativeBridgeToggleDescription, kOsCrOS,
+     FEATURE_VALUE_TYPE(arc::kNativeBridgeToggleFeature)},
     {"arc-print-spooler-experiment",
      flag_descriptions::kArcPrintSpoolerExperimentName,
      flag_descriptions::kArcPrintSpoolerExperimentDescription, kOsCrOS,
diff --git a/chrome/browser/chromeos/dbus/chrome_features_service_provider.cc b/chrome/browser/chromeos/dbus/chrome_features_service_provider.cc
index 25661e4c..9279d2f 100644
--- a/chrome/browser/chromeos/dbus/chrome_features_service_provider.cc
+++ b/chrome/browser/chromeos/dbus/chrome_features_service_provider.cc
@@ -121,7 +121,7 @@
       &arc::kBootCompletedBroadcastFeature,
       &arc::kCustomTabsExperimentFeature,
       &arc::kFilePickerExperimentFeature,
-      &arc::kNativeBridgeExperimentFeature,
+      &arc::kNativeBridgeToggleFeature,
       &arc::kPrintSpoolerExperimentFeature,
   };
 
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 443af491..3fa514a 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -123,9 +123,11 @@
     "expiry_milestone": 76
   },
   {
-    "name": "arc-native-bridge-experiment",
+    "name": "arc-native-bridge-toggle",
     "owners": [ "[email protected]" ],
-    "expiry_milestone": 76
+    // Used on ChromeOS to compare and debug different ARC native-bridge
+    // implementations which are normally used on different platforms.
+    "expiry_milestone": -1
   },
   {
     "name": "arc-print-spooler-experiment",
diff --git a/chrome/browser/flag-never-expire-list.json b/chrome/browser/flag-never-expire-list.json
index b2fd37173..ccba741 100644
--- a/chrome/browser/flag-never-expire-list.json
+++ b/chrome/browser/flag-never-expire-list.json
@@ -14,6 +14,7 @@
 // test (AboutFlagsTest.OnlyPermittedFlagsNeverExpire).
 [
   "allow-previews",
+  "arc-native-bridge-toggle",
   "ash-debug-shortcuts",
   "ash-enable-unified-desktop",
   "data-saver-server-previews",
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 0187c5c6..8efed91 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -3044,10 +3044,10 @@
 const char kArcFilePickerExperimentDescription[] =
     "Enables using Chrome OS file picker in ARC.";
 
-const char kArcNativeBridgeExperimentName[] =
-    "Enable native bridge experiment for ARC";
-const char kArcNativeBridgeExperimentDescription[] =
-    "Enables experimental native bridge feature.";
+const char kArcNativeBridgeToggleName[] =
+    "Toggle between native bridge implementations for ARC";
+const char kArcNativeBridgeToggleDescription[] =
+    "Toggle between native bridge implementations for ARC.";
 
 const char kArcPrintSpoolerExperimentName[] =
     "Enable print spooler experiment for ARC";
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index edea588..b55c818 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -1814,8 +1814,8 @@
 extern const char kArcFilePickerExperimentName[];
 extern const char kArcFilePickerExperimentDescription[];
 
-extern const char kArcNativeBridgeExperimentName[];
-extern const char kArcNativeBridgeExperimentDescription[];
+extern const char kArcNativeBridgeToggleName[];
+extern const char kArcNativeBridgeToggleDescription[];
 
 extern const char kArcPrintSpoolerExperimentName[];
 extern const char kArcPrintSpoolerExperimentDescription[];
diff --git a/components/arc/arc_features.cc b/components/arc/arc_features.cc
index 867da0e..719b98f23 100644
--- a/components/arc/arc_features.cc
+++ b/components/arc/arc_features.cc
@@ -48,10 +48,11 @@
 const base::Feature kFilePickerExperimentFeature{
     "ArcFilePickerExperiment", base::FEATURE_ENABLED_BY_DEFAULT};
 
-// Controls experimental native bridge feature for ARC.
-const base::Feature kNativeBridgeExperimentFeature {
-    "ArcNativeBridgeExperiment", base::FEATURE_ENABLED_BY_DEFAULT
-};
+// Toggles between native bridge implementations for ARC.
+// Note, that we keep the original feature name to preserve
+// corresponding metrics.
+const base::Feature kNativeBridgeToggleFeature{
+    "ArcNativeBridgeExperiment", base::FEATURE_ENABLED_BY_DEFAULT};
 
 // Controls experimental print spooler feature for ARC.
 const base::Feature kPrintSpoolerExperimentFeature{
diff --git a/components/arc/arc_features.h b/components/arc/arc_features.h
index 4f9b39d..c696665 100644
--- a/components/arc/arc_features.h
+++ b/components/arc/arc_features.h
@@ -21,7 +21,7 @@
 extern const base::Feature kEnableRegularToChildTransitionFeature;
 extern const base::Feature kEnableUnifiedAudioFocusFeature;
 extern const base::Feature kFilePickerExperimentFeature;
-extern const base::Feature kNativeBridgeExperimentFeature;
+extern const base::Feature kNativeBridgeToggleFeature;
 extern const base::Feature kPrintSpoolerExperimentFeature;
 extern const base::Feature kSmartTextSelectionFeature;
 extern const base::Feature kUsbHostFeature;
diff --git a/components/arc/session/arc_session_impl.cc b/components/arc/session/arc_session_impl.cc
index 7a31cfb..0a45db11 100644
--- a/components/arc/session/arc_session_impl.cc
+++ b/components/arc/session/arc_session_impl.cc
@@ -365,7 +365,7 @@
   state_ = State::STARTING_MINI_INSTANCE;
   StartArcMiniContainerRequest request;
   request.set_native_bridge_experiment(
-      base::FeatureList::IsEnabled(arc::kNativeBridgeExperimentFeature));
+      base::FeatureList::IsEnabled(arc::kNativeBridgeToggleFeature));
   request.set_arc_file_picker_experiment(
       base::FeatureList::IsEnabled(arc::kFilePickerExperimentFeature));
   // Enable Custom Tabs only on Dev and Cannary, and only when Mash is enabled.