Make kLacrosProfileMigrationForceOff a flag on chrome://flags.
The patch makes the feature accessible from UI thus making it possible
to turn off profile migration on any device including devices with non
test images.
Bug: 1284848
Change-Id: I16f443e56e690026bfae0a7ee4727b23e0eb50b4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3364845
Reviewed-by: Stefan Kuhne <[email protected]>
Commit-Queue: Yuta Hijikata <[email protected]>
Cr-Commit-Position: refs/heads/main@{#957410}
diff --git a/ash/constants/ash_features.cc b/ash/constants/ash_features.cc
index 8d32c963..3936343 100644
--- a/ash/constants/ash_features.cc
+++ b/ash/constants/ash_features.cc
@@ -799,6 +799,10 @@
const base::Feature kForceProfileMigrationCompletion{
"ForceProfileMigrationCompletion", base::FEATURE_DISABLED_BY_DEFAULT};
+// Emergency switch to turn off profile migration.
+const base::Feature kLacrosProfileMigrationForceOff{
+ "LacrosProfileMigrationForceOff", base::FEATURE_DISABLED_BY_DEFAULT};
+
// Enable this to turn on profile migration for non-googlers. Currently the
// feature is only limited to googlers only.
const base::Feature kLacrosProfileMigrationForAnyUser{
diff --git a/ash/constants/ash_features.h b/ash/constants/ash_features.h
index ac93273..1c12411 100644
--- a/ash/constants/ash_features.h
+++ b/ash/constants/ash_features.h
@@ -303,6 +303,8 @@
COMPONENT_EXPORT(ASH_CONSTANTS)
extern const base::Feature kLacrosProfileMigrationForAnyUser;
COMPONENT_EXPORT(ASH_CONSTANTS)
+extern const base::Feature kLacrosProfileMigrationForceOff;
+COMPONENT_EXPORT(ASH_CONSTANTS)
extern const base::Feature kLanguagePacksHandwriting;
COMPONENT_EXPORT(ASH_CONSTANTS)
extern const base::Feature kLanguageSettingsUpdate2;
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index b76e1c4..a58dbc03 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -3177,6 +3177,10 @@
flag_descriptions::kLacrosProfileMigrationForAnyUserName,
flag_descriptions::kLacrosProfileMigrationForAnyUserDescription, kOsCrOS,
FEATURE_VALUE_TYPE(ash::features::kLacrosProfileMigrationForAnyUser)},
+ {"lacros-profile-migration-force-off",
+ flag_descriptions::kLacrosProfileMigrationForceOffName,
+ flag_descriptions::kLacrosProfileMigrationForceOffDescription, kOsCrOS,
+ FEATURE_VALUE_TYPE(ash::features::kLacrosProfileMigrationForceOff)},
{kLacrosSelectionInternalName, flag_descriptions::kLacrosSelectionName,
flag_descriptions::kLacrosSelectionDescription, kOsCrOS,
MULTI_VALUE_TYPE(kLacrosSelectionChoices)},
diff --git a/chrome/browser/ash/crosapi/browser_util.cc b/chrome/browser/ash/crosapi/browser_util.cc
index 375edb8..13a0259 100644
--- a/chrome/browser/ash/crosapi/browser_util.cc
+++ b/chrome/browser/ash/crosapi/browser_util.cc
@@ -239,10 +239,6 @@
const base::Feature kLacrosGooglePolicyRollout{
"LacrosGooglePolicyRollout", base::FEATURE_DISABLED_BY_DEFAULT};
-// Emergency switch to turn off profile migration via Finch.
-const base::Feature kLacrosProfileMigrationForceOff{
- "LacrosProfileMigrationForceOff", base::FEATURE_DISABLED_BY_DEFAULT};
-
const Channel kLacrosDefaultChannel = Channel::DEV;
const char kLacrosStabilitySwitch[] = "lacros-stability";
@@ -355,9 +351,8 @@
bool IsProfileMigrationEnabled(const AccountId& account_id) {
// Emergency switch to turn off profile migration. Turn this on via Finch in
// case profile migration needs to be turned off after launch.
- if (base::FeatureList::IsEnabled(kLacrosProfileMigrationForceOff)) {
- LOG(WARNING)
- << "Profile migration is turned off by kLacrosProfileMigrationForceOff";
+ if (base::FeatureList::IsEnabled(
+ ash::features::kLacrosProfileMigrationForceOff)) {
return false;
}
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 07e4db0e..da93c229 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -3704,6 +3704,14 @@
"expiry_milestone": 130
},
{
+ "name": "lacros-profile-migration-force-off",
+ "owners": ["ythjkt", "hidehiko", "[email protected]"],
+ // Once Lacros is launched, this flag can be removed. Until then, this
+ // absolutely must not expire. We do not yet have a launch milestone.
+ // TODO(https://crbug.com/1148474).
+ "expiry_milestone": 130
+ },
+ {
"name": "lacros-selection",
"owners": [ "kimjae", "erikchen", "[email protected]" ],
"expiry_milestone": 130
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index b9797086..acbe0148 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -4845,6 +4845,17 @@
"data migrated from ash. It also has a side effect that lacros will be "
"disbled until profile migration is completed.";
+const char kLacrosProfileMigrationForceOffName[] = "Disable profile migration";
+const char kLacrosProfileMigrationForceOffDescription[] =
+ "Disables lacros profile migration. Lacros profile migration is being "
+ "rolled out to internal users first. Once lacros profile migration becomes "
+ "available to the user, the completion of profile migration becomes a "
+ "requirement to use lacros i.e. if profile migration gets rolled out to "
+ "the user and the migration fails, then lacros becomes unavailable until "
+ "the migration is completed. By enabling this flag, even if profile "
+ "migration is rolled out to the user, the migration will not run and the "
+ "user can continue to use lacros without profile migration.";
+
const char kLimitShelfItemsToActiveDeskName[] =
"Limit Shelf items to active desk";
const char kLimitShelfItemsToActiveDeskDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 5307ee4..80cbe55 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -2740,6 +2740,9 @@
extern const char kLacrosProfileMigrationForAnyUserName[];
extern const char kLacrosProfileMigrationForAnyUserDescription[];
+extern const char kLacrosProfileMigrationForceOffName[];
+extern const char kLacrosProfileMigrationForceOffDescription[];
+
extern const char kImeAssistPersonalInfoName[];
extern const char kImeAssistPersonalInfoDescription[];
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index e301bca..7100cef 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -52766,6 +52766,7 @@
<int value="-588669613"
label="OmniboxClobberIsZeroSuggestEntrypoint:enabled"/>
<int value="-585508682" label="DownloadRange:enabled"/>
+ <int value="-584866456" label="LacrosProfileMigrationForceOff:disabled"/>
<int value="-582870536" label="BluetoothNextHandsfreeProfile:enabled"/>
<int value="-581236612" label="ConnectivityDiagnosticsWebUi:disabled"/>
<int value="-580897686" label="SharedHighlightingAmp:enabled"/>
@@ -54049,6 +54050,7 @@
<int value="379326303" label="enable-add-to-shelf"/>
<int value="379428799" label="security-chip-animation"/>
<int value="380372760" label="V8Orinoco:disabled"/>
+ <int value="380378407" label="LacrosProfileMigrationForceOff:enabled"/>
<int value="382478170" label="SemanticColorDebugOverride:disabled"/>
<int value="384677240" label="AssistMultiWordLacrosSupport:enabled"/>
<int value="385969127" label="disable-win32k-lockdown"/>