Merge "Adding a Teamfood flag option" into udc-dev
This commit is contained in:
@@ -15,16 +15,20 @@
|
||||
*/
|
||||
package com.android.launcher3.uioverrides.flags;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.android.launcher3.config.FeatureFlags.BooleanFlag;
|
||||
import com.android.launcher3.config.FeatureFlags.FlagState;
|
||||
|
||||
class DebugFlag extends BooleanFlag {
|
||||
|
||||
public final String key;
|
||||
public final String description;
|
||||
|
||||
public final boolean defaultValue;
|
||||
@NonNull
|
||||
public final FlagState defaultValue;
|
||||
|
||||
public DebugFlag(String key, String description, boolean defaultValue, boolean currentValue) {
|
||||
DebugFlag(String key, String description, FlagState defaultValue, boolean currentValue) {
|
||||
super(currentValue);
|
||||
this.key = key;
|
||||
this.defaultValue = defaultValue;
|
||||
|
||||
@@ -39,6 +39,7 @@ import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.Settings;
|
||||
import android.text.Editable;
|
||||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.Pair;
|
||||
@@ -182,9 +183,16 @@ public class DeveloperOptionsFragment extends PreferenceFragmentCompat {
|
||||
}
|
||||
|
||||
private PreferenceCategory newCategory(String title) {
|
||||
return newCategory(title, null);
|
||||
}
|
||||
|
||||
private PreferenceCategory newCategory(String title, @Nullable String summary) {
|
||||
PreferenceCategory category = new PreferenceCategory(getContext());
|
||||
category.setOrder(Preference.DEFAULT_ORDER);
|
||||
category.setTitle(title);
|
||||
if (!TextUtils.isEmpty(summary)) {
|
||||
category.setSummary(summary);
|
||||
}
|
||||
mPreferenceScreen.addPreference(category);
|
||||
return category;
|
||||
}
|
||||
@@ -195,7 +203,7 @@ public class DeveloperOptionsFragment extends PreferenceFragmentCompat {
|
||||
}
|
||||
|
||||
mFlagTogglerPrefUi = new FlagTogglerPrefUi(this);
|
||||
mFlagTogglerPrefUi.applyTo(newCategory("Feature flags"));
|
||||
mFlagTogglerPrefUi.applyTo(newCategory("Feature flags", "Long press to reset"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -16,11 +16,13 @@
|
||||
|
||||
package com.android.launcher3.uioverrides.flags;
|
||||
|
||||
import com.android.launcher3.config.FeatureFlags.FlagState;
|
||||
|
||||
class DeviceFlag extends DebugFlag {
|
||||
|
||||
private final boolean mDefaultValueInCode;
|
||||
|
||||
public DeviceFlag(String key, String description, boolean defaultValue,
|
||||
DeviceFlag(String key, String description, FlagState defaultValue,
|
||||
boolean currentValue, boolean defaultValueInCode) {
|
||||
super(key, description, defaultValue, currentValue);
|
||||
mDefaultValueInCode = defaultValueInCode;
|
||||
|
||||
@@ -17,11 +17,15 @@
|
||||
package com.android.launcher3.uioverrides.flags;
|
||||
|
||||
import static com.android.launcher3.config.FeatureFlags.FLAGS_PREF_NAME;
|
||||
import static com.android.launcher3.config.FeatureFlags.FlagState.TEAMFOOD;
|
||||
import static com.android.launcher3.uioverrides.flags.FlagsFactory.TEAMFOOD_FLAG;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Handler;
|
||||
import android.os.Process;
|
||||
import android.text.Html;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
@@ -30,6 +34,7 @@ import android.widget.Toast;
|
||||
import androidx.preference.PreferenceDataStore;
|
||||
import androidx.preference.PreferenceFragmentCompat;
|
||||
import androidx.preference.PreferenceGroup;
|
||||
import androidx.preference.PreferenceViewHolder;
|
||||
import androidx.preference.SwitchPreference;
|
||||
|
||||
import com.android.launcher3.R;
|
||||
@@ -59,12 +64,7 @@ public final class FlagTogglerPrefUi {
|
||||
|
||||
@Override
|
||||
public boolean getBoolean(String key, boolean defaultValue) {
|
||||
for (DebugFlag flag : FlagsFactory.getDebugFlags()) {
|
||||
if (flag.key.equals(key)) {
|
||||
return mSharedPreferences.getBoolean(key, flag.defaultValue);
|
||||
}
|
||||
}
|
||||
return defaultValue;
|
||||
return mSharedPreferences.getBoolean(key, defaultValue);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -87,18 +87,41 @@ public final class FlagTogglerPrefUi {
|
||||
: f1.key.compareToIgnoreCase(f2.key);
|
||||
});
|
||||
|
||||
// Ensure that teamfood flag comes on the top
|
||||
if (flags.remove(TEAMFOOD_FLAG)) {
|
||||
flags.add(0, (DebugFlag) TEAMFOOD_FLAG);
|
||||
}
|
||||
|
||||
// For flag overrides we only want to store when the engineer chose to override the
|
||||
// flag with a different value than the default. That way, when we flip flags in
|
||||
// future, engineers will pick up the new value immediately. To accomplish this, we use a
|
||||
// custom preference data store.
|
||||
for (DebugFlag flag : flags) {
|
||||
SwitchPreference switchPreference = new SwitchPreference(mContext);
|
||||
SwitchPreference switchPreference = new SwitchPreference(mContext) {
|
||||
@Override
|
||||
public void onBindViewHolder(PreferenceViewHolder holder) {
|
||||
super.onBindViewHolder(holder);
|
||||
holder.itemView.setOnLongClickListener(v -> {
|
||||
mSharedPreferences.edit().remove(flag.key).apply();
|
||||
setChecked(getFlagStateFromSharedPrefs(flag));
|
||||
updateSummary(this, flag);
|
||||
updateMenu();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
};
|
||||
switchPreference.setKey(flag.key);
|
||||
switchPreference.setDefaultValue(flag.defaultValue);
|
||||
switchPreference.setDefaultValue(FlagsFactory.getEnabledValue(flag.defaultValue));
|
||||
switchPreference.setChecked(getFlagStateFromSharedPrefs(flag));
|
||||
switchPreference.setTitle(flag.key);
|
||||
updateSummary(switchPreference, flag);
|
||||
switchPreference.setPreferenceDataStore(mDataStore);
|
||||
switchPreference.setOnPreferenceChangeListener((p, v) -> {
|
||||
new Handler().post(() -> updateSummary(switchPreference, flag));
|
||||
return true;
|
||||
});
|
||||
|
||||
|
||||
parent.addPreference(switchPreference);
|
||||
}
|
||||
updateMenu();
|
||||
@@ -108,10 +131,15 @@ public final class FlagTogglerPrefUi {
|
||||
* Updates the summary to show the description and whether the flag overrides the default value.
|
||||
*/
|
||||
private void updateSummary(SwitchPreference switchPreference, DebugFlag flag) {
|
||||
String onWarning = flag.defaultValue ? "" : "<b>OVERRIDDEN</b><br>";
|
||||
String offWarning = flag.defaultValue ? "<b>OVERRIDDEN</b><br>" : "";
|
||||
switchPreference.setSummaryOn(Html.fromHtml(onWarning + flag.description));
|
||||
switchPreference.setSummaryOff(Html.fromHtml(offWarning + flag.description));
|
||||
String summary = flag.defaultValue == TEAMFOOD
|
||||
? "<font color='blue'><b>[TEAMFOOD]</b> </font>" : "";
|
||||
if (mSharedPreferences.contains(flag.key)) {
|
||||
summary += "<font color='red'><b>[OVERRIDDEN]</b> </font>";
|
||||
}
|
||||
if (!TextUtils.isEmpty(summary)) {
|
||||
summary += "<br>";
|
||||
}
|
||||
switchPreference.setSummary(Html.fromHtml(summary + flag.description));
|
||||
}
|
||||
|
||||
private void updateMenu() {
|
||||
@@ -143,7 +171,8 @@ public final class FlagTogglerPrefUi {
|
||||
}
|
||||
|
||||
private boolean getFlagStateFromSharedPrefs(DebugFlag flag) {
|
||||
return mDataStore.getBoolean(flag.key, flag.defaultValue);
|
||||
boolean defaultValue = FlagsFactory.getEnabledValue(flag.defaultValue);
|
||||
return mDataStore.getBoolean(flag.key, defaultValue);
|
||||
}
|
||||
|
||||
private boolean anyChanged() {
|
||||
|
||||
@@ -18,6 +18,10 @@ package com.android.launcher3.uioverrides.flags;
|
||||
|
||||
import static android.app.ActivityThread.currentApplication;
|
||||
|
||||
import static com.android.launcher3.BuildConfig.IS_DEBUG_DEVICE;
|
||||
import static com.android.launcher3.config.FeatureFlags.FlagState.DISABLED;
|
||||
import static com.android.launcher3.config.FeatureFlags.FlagState.ENABLED;
|
||||
import static com.android.launcher3.config.FeatureFlags.FlagState.TEAMFOOD;
|
||||
import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR;
|
||||
|
||||
import android.content.Context;
|
||||
@@ -26,8 +30,8 @@ import android.provider.DeviceConfig;
|
||||
import android.provider.DeviceConfig.Properties;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.launcher3.Utilities;
|
||||
import com.android.launcher3.config.FeatureFlags.BooleanFlag;
|
||||
import com.android.launcher3.config.FeatureFlags.FlagState;
|
||||
import com.android.launcher3.config.FeatureFlags.IntFlag;
|
||||
import com.android.launcher3.util.ScreenOnTracker;
|
||||
|
||||
@@ -53,6 +57,9 @@ public class FlagsFactory {
|
||||
|
||||
private static final List<DebugFlag> sDebugFlags = new ArrayList<>();
|
||||
|
||||
static final BooleanFlag TEAMFOOD_FLAG = getReleaseFlag(
|
||||
0, "LAUNCHER_TEAMFOOD", DISABLED, "Enable this flag to opt-in all team food flags");
|
||||
|
||||
private final Set<String> mKeySet = new HashSet<>();
|
||||
private boolean mRestartRequested = false;
|
||||
|
||||
@@ -64,35 +71,54 @@ public class FlagsFactory {
|
||||
NAMESPACE_LAUNCHER, UI_HELPER_EXECUTOR, this::onPropertiesChanged);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new debug flag
|
||||
*/
|
||||
public static BooleanFlag getDebugFlag(
|
||||
int bugId, String key, boolean defaultValue, String description) {
|
||||
if (Utilities.IS_DEBUG_DEVICE) {
|
||||
SharedPreferences prefs = currentApplication()
|
||||
.getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE);
|
||||
boolean currentValue = prefs.getBoolean(key, defaultValue);
|
||||
DebugFlag flag = new DebugFlag(key, description, defaultValue, currentValue);
|
||||
sDebugFlags.add(flag);
|
||||
return flag;
|
||||
static boolean getEnabledValue(FlagState flagState) {
|
||||
if (IS_DEBUG_DEVICE) {
|
||||
switch (flagState) {
|
||||
case ENABLED:
|
||||
return true;
|
||||
case TEAMFOOD:
|
||||
return TEAMFOOD_FLAG.get();
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
return new BooleanFlag(defaultValue);
|
||||
return flagState == ENABLED;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new release flag
|
||||
* Creates a new debug flag. Debug flags always take their default value in release builds. On
|
||||
* dogfood builds, they can be manually turned on using the flag toggle UI.
|
||||
*/
|
||||
public static BooleanFlag getDebugFlag(
|
||||
int bugId, String key, FlagState flagState, String description) {
|
||||
if (IS_DEBUG_DEVICE) {
|
||||
SharedPreferences prefs = currentApplication()
|
||||
.getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE);
|
||||
boolean defaultValue = getEnabledValue(flagState);
|
||||
boolean currentValue = prefs.getBoolean(key, defaultValue);
|
||||
DebugFlag flag = new DebugFlag(key, description, flagState, currentValue);
|
||||
sDebugFlags.add(flag);
|
||||
return flag;
|
||||
} else {
|
||||
return new BooleanFlag(getEnabledValue(flagState));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new release flag. Release flags can be rolled out using server configurations and
|
||||
* also allow manual overrides on debug builds.
|
||||
*/
|
||||
public static BooleanFlag getReleaseFlag(
|
||||
int bugId, String key, boolean defaultValueInCode, String description) {
|
||||
int bugId, String key, FlagState flagState, String description) {
|
||||
INSTANCE.mKeySet.add(key);
|
||||
boolean defaultValueInCode = getEnabledValue(flagState);
|
||||
boolean defaultValue = DeviceConfig.getBoolean(NAMESPACE_LAUNCHER, key, defaultValueInCode);
|
||||
if (Utilities.IS_DEBUG_DEVICE) {
|
||||
if (IS_DEBUG_DEVICE) {
|
||||
SharedPreferences prefs = currentApplication()
|
||||
.getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE);
|
||||
boolean currentValue = prefs.getBoolean(key, defaultValue);
|
||||
DebugFlag flag = new DeviceFlag(key, description, defaultValue, currentValue,
|
||||
DebugFlag flag = new DeviceFlag(key, description, flagState, currentValue,
|
||||
defaultValueInCode);
|
||||
sDebugFlags.add(flag);
|
||||
return flag;
|
||||
@@ -111,7 +137,7 @@ public class FlagsFactory {
|
||||
}
|
||||
|
||||
static List<DebugFlag> getDebugFlags() {
|
||||
if (!Utilities.IS_DEBUG_DEVICE) {
|
||||
if (!IS_DEBUG_DEVICE) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
synchronized (sDebugFlags) {
|
||||
@@ -123,7 +149,7 @@ public class FlagsFactory {
|
||||
* Dumps the current flags state to the print writer
|
||||
*/
|
||||
public static void dump(PrintWriter pw) {
|
||||
if (!Utilities.IS_DEBUG_DEVICE) {
|
||||
if (!IS_DEBUG_DEVICE) {
|
||||
return;
|
||||
}
|
||||
pw.println("DeviceFlags:");
|
||||
|
||||
@@ -16,6 +16,9 @@
|
||||
|
||||
package com.android.launcher3.config;
|
||||
|
||||
import static com.android.launcher3.config.FeatureFlags.FlagState.DISABLED;
|
||||
import static com.android.launcher3.config.FeatureFlags.FlagState.ENABLED;
|
||||
import static com.android.launcher3.config.FeatureFlags.FlagState.TEAMFOOD;
|
||||
import static com.android.launcher3.uioverrides.flags.FlagsFactory.getDebugFlag;
|
||||
import static com.android.launcher3.uioverrides.flags.FlagsFactory.getReleaseFlag;
|
||||
|
||||
@@ -74,338 +77,326 @@ public final class FeatureFlags {
|
||||
* and set a default value for the flag. This will be the default value on Debug builds.
|
||||
*/
|
||||
public static final BooleanFlag ENABLE_INPUT_CONSUMER_REASON_LOGGING = getDebugFlag(270390028,
|
||||
"ENABLE_INPUT_CONSUMER_REASON_LOGGING",
|
||||
true,
|
||||
"ENABLE_INPUT_CONSUMER_REASON_LOGGING", ENABLED,
|
||||
"Log the reason why an Input Consumer was selected for a gesture.");
|
||||
|
||||
public static final BooleanFlag ENABLE_GESTURE_ERROR_DETECTION = getDebugFlag(270389990,
|
||||
"ENABLE_GESTURE_ERROR_DETECTION",
|
||||
true,
|
||||
"ENABLE_GESTURE_ERROR_DETECTION", ENABLED,
|
||||
"Analyze gesture events and log detected errors");
|
||||
|
||||
// When enabled the promise icon is visible in all apps while installation an app.
|
||||
public static final BooleanFlag PROMISE_APPS_IN_ALL_APPS = getDebugFlag(270390012,
|
||||
"PROMISE_APPS_IN_ALL_APPS", false, "Add promise icon in all-apps");
|
||||
"PROMISE_APPS_IN_ALL_APPS", DISABLED, "Add promise icon in all-apps");
|
||||
|
||||
public static final BooleanFlag KEYGUARD_ANIMATION = getDebugFlag(270390904,
|
||||
"KEYGUARD_ANIMATION", false, "Enable animation for keyguard going away on wallpaper");
|
||||
"KEYGUARD_ANIMATION", DISABLED,
|
||||
"Enable animation for keyguard going away on wallpaper");
|
||||
|
||||
public static final BooleanFlag ENABLE_DEVICE_SEARCH = getReleaseFlag(270390907,
|
||||
"ENABLE_DEVICE_SEARCH", true, "Allows on device search in all apps");
|
||||
"ENABLE_DEVICE_SEARCH", ENABLED, "Allows on device search in all apps");
|
||||
|
||||
public static final BooleanFlag ENABLE_FLOATING_SEARCH_BAR =
|
||||
getReleaseFlag(270390286, "ENABLE_FLOATING_SEARCH_BAR", false,
|
||||
"Keep All Apps search bar at the bottom (but above keyboard if open)");
|
||||
getReleaseFlag(270390286, "ENABLE_FLOATING_SEARCH_BAR", DISABLED,
|
||||
"Keep All Apps search bar at the bottom (but above keyboard if open)");
|
||||
|
||||
public static final BooleanFlag ENABLE_HIDE_HEADER = getReleaseFlag(270390930,
|
||||
"ENABLE_HIDE_HEADER", true, "Hide header on keyboard before typing in all apps");
|
||||
"ENABLE_HIDE_HEADER", ENABLED, "Hide header on keyboard before typing in all apps");
|
||||
|
||||
public static final BooleanFlag ENABLE_EXPANDING_PAUSE_WORK_BUTTON = getDebugFlag(270390779,
|
||||
"ENABLE_EXPANDING_PAUSE_WORK_BUTTON", false,
|
||||
"ENABLE_EXPANDING_PAUSE_WORK_BUTTON", DISABLED,
|
||||
"Expand and collapse pause work button while scrolling");
|
||||
|
||||
public static final BooleanFlag COLLECT_SEARCH_HISTORY = getReleaseFlag(270391455,
|
||||
"COLLECT_SEARCH_HISTORY", false, "Allow launcher to collect search history for log");
|
||||
"COLLECT_SEARCH_HISTORY", DISABLED, "Allow launcher to collect search history for log");
|
||||
|
||||
public static final BooleanFlag ENABLE_TWOLINE_ALLAPPS = getDebugFlag(270390937,
|
||||
"ENABLE_TWOLINE_ALLAPPS", false, "Enables two line label inside all apps.");
|
||||
"ENABLE_TWOLINE_ALLAPPS", DISABLED, "Enables two line label inside all apps.");
|
||||
|
||||
public static final BooleanFlag ENABLE_TWOLINE_DEVICESEARCH = getDebugFlag(201388851,
|
||||
"ENABLE_TWOLINE_DEVICESEARCH", false,
|
||||
"ENABLE_TWOLINE_DEVICESEARCH", DISABLED,
|
||||
"Enable two line label for icons with labels on device search.");
|
||||
|
||||
public static final BooleanFlag ENABLE_DEVICE_SEARCH_PERFORMANCE_LOGGING = getReleaseFlag(
|
||||
270391397, "ENABLE_DEVICE_SEARCH_PERFORMANCE_LOGGING", false,
|
||||
270391397, "ENABLE_DEVICE_SEARCH_PERFORMANCE_LOGGING", DISABLED,
|
||||
"Allows on device search in all apps logging");
|
||||
|
||||
public static final BooleanFlag IME_STICKY_SNACKBAR_EDU = getDebugFlag(270391693,
|
||||
"IME_STICKY_SNACKBAR_EDU", true, "Show sticky IME edu in AllApps");
|
||||
"IME_STICKY_SNACKBAR_EDU", ENABLED, "Show sticky IME edu in AllApps");
|
||||
|
||||
public static final BooleanFlag ENABLE_PEOPLE_TILE_PREVIEW = getDebugFlag(270391653,
|
||||
"ENABLE_PEOPLE_TILE_PREVIEW", false,
|
||||
"ENABLE_PEOPLE_TILE_PREVIEW", DISABLED,
|
||||
"Experimental: Shows conversation shortcuts on home screen as search results");
|
||||
|
||||
public static final BooleanFlag FOLDER_NAME_MAJORITY_RANKING = getDebugFlag(270391638,
|
||||
"FOLDER_NAME_MAJORITY_RANKING", true,
|
||||
"FOLDER_NAME_MAJORITY_RANKING", ENABLED,
|
||||
"Suggests folder names based on majority based ranking.");
|
||||
|
||||
public static final BooleanFlag INJECT_FALLBACK_APP_CORPUS_RESULTS = getReleaseFlag(270391706,
|
||||
"INJECT_FALLBACK_APP_CORPUS_RESULTS", false,
|
||||
"INJECT_FALLBACK_APP_CORPUS_RESULTS", DISABLED,
|
||||
"Inject fallback app corpus result when AiAi fails to return it.");
|
||||
|
||||
public static final BooleanFlag ASSISTANT_GIVES_LAUNCHER_FOCUS = getDebugFlag(270391641,
|
||||
"ASSISTANT_GIVES_LAUNCHER_FOCUS", false,
|
||||
"ASSISTANT_GIVES_LAUNCHER_FOCUS", DISABLED,
|
||||
"Allow Launcher to handle nav bar gestures while Assistant is running over it");
|
||||
|
||||
public static final BooleanFlag ENABLE_BULK_WORKSPACE_ICON_LOADING = getDebugFlag(270392203,
|
||||
"ENABLE_BULK_WORKSPACE_ICON_LOADING",
|
||||
true,
|
||||
"ENABLE_BULK_WORKSPACE_ICON_LOADING", ENABLED,
|
||||
"Enable loading workspace icons in bulk.");
|
||||
|
||||
public static final BooleanFlag ENABLE_BULK_ALL_APPS_ICON_LOADING = getDebugFlag(270392465,
|
||||
"ENABLE_BULK_ALL_APPS_ICON_LOADING",
|
||||
true,
|
||||
"Enable loading all apps icons in bulk.");
|
||||
"ENABLE_BULK_ALL_APPS_ICON_LOADING", ENABLED, "Enable loading all apps icons in bulk.");
|
||||
|
||||
public static final BooleanFlag ENABLE_DATABASE_RESTORE = getDebugFlag(270392706,
|
||||
"ENABLE_DATABASE_RESTORE", false,
|
||||
"ENABLE_DATABASE_RESTORE", DISABLED,
|
||||
"Enable database restore when new restore session is created");
|
||||
|
||||
public static final BooleanFlag ENABLE_SMARTSPACE_DISMISS = getDebugFlag(270391664,
|
||||
"ENABLE_SMARTSPACE_DISMISS", true,
|
||||
"ENABLE_SMARTSPACE_DISMISS", ENABLED,
|
||||
"Adds a menu option to dismiss the current Enhanced Smartspace card.");
|
||||
|
||||
public static final BooleanFlag ENABLE_OVERLAY_CONNECTION_OPTIM = getDebugFlag(270392629,
|
||||
"ENABLE_OVERLAY_CONNECTION_OPTIM",
|
||||
false,
|
||||
"ENABLE_OVERLAY_CONNECTION_OPTIM", DISABLED,
|
||||
"Enable optimizing overlay service connection");
|
||||
|
||||
/**
|
||||
* Enables region sampling for text color: Needs system health assessment before turning on
|
||||
*/
|
||||
public static final BooleanFlag ENABLE_REGION_SAMPLING = getDebugFlag(270391669,
|
||||
"ENABLE_REGION_SAMPLING", false,
|
||||
"ENABLE_REGION_SAMPLING", DISABLED,
|
||||
"Enable region sampling to determine color of text on screen.");
|
||||
|
||||
public static final BooleanFlag ALWAYS_USE_HARDWARE_OPTIMIZATION_FOR_FOLDER_ANIMATIONS =
|
||||
getDebugFlag(270393096,
|
||||
"ALWAYS_USE_HARDWARE_OPTIMIZATION_FOR_FOLDER_ANIMATIONS", false,
|
||||
"Always use hardware optimization for folder animations.");
|
||||
getDebugFlag(270393096, "ALWAYS_USE_HARDWARE_OPTIMIZATION_FOR_FOLDER_ANIMATIONS",
|
||||
DISABLED, "Always use hardware optimization for folder animations.");
|
||||
|
||||
public static final BooleanFlag SEPARATE_RECENTS_ACTIVITY = getDebugFlag(270392980,
|
||||
"SEPARATE_RECENTS_ACTIVITY", false,
|
||||
"SEPARATE_RECENTS_ACTIVITY", DISABLED,
|
||||
"Uses a separate recents activity instead of using the integrated recents+Launcher UI");
|
||||
|
||||
public static final BooleanFlag ENABLE_MINIMAL_DEVICE = getDebugFlag(270392984,
|
||||
"ENABLE_MINIMAL_DEVICE", false,
|
||||
"ENABLE_MINIMAL_DEVICE", DISABLED,
|
||||
"Allow user to toggle minimal device mode in launcher.");
|
||||
|
||||
public static final BooleanFlag ENABLE_TASKBAR_POPUP_MENU = getDebugFlag(
|
||||
270392477, "ENABLE_TASKBAR_POPUP_MENU", true,
|
||||
public static final BooleanFlag ENABLE_TASKBAR_POPUP_MENU = getDebugFlag(270392477,
|
||||
"ENABLE_TASKBAR_POPUP_MENU", ENABLED,
|
||||
"Enables long pressing taskbar icons to show the popup menu.");
|
||||
|
||||
public static final BooleanFlag ENABLE_TWO_PANEL_HOME = getDebugFlag(270392643,
|
||||
"ENABLE_TWO_PANEL_HOME", true,
|
||||
"ENABLE_TWO_PANEL_HOME", ENABLED,
|
||||
"Uses two panel on home screen. Only applicable on large screen devices.");
|
||||
|
||||
public static final BooleanFlag ENABLE_SCRIM_FOR_APP_LAUNCH = getDebugFlag(270393276,
|
||||
"ENABLE_SCRIM_FOR_APP_LAUNCH", false,
|
||||
"Enables scrim during app launch animation.");
|
||||
"ENABLE_SCRIM_FOR_APP_LAUNCH", DISABLED, "Enables scrim during app launch animation.");
|
||||
|
||||
public static final BooleanFlag ENABLE_ENFORCED_ROUNDED_CORNERS = getReleaseFlag(270393258,
|
||||
"ENABLE_ENFORCED_ROUNDED_CORNERS", true, "Enforce rounded corners on all App Widgets");
|
||||
"ENABLE_ENFORCED_ROUNDED_CORNERS", ENABLED,
|
||||
"Enforce rounded corners on all App Widgets");
|
||||
|
||||
public static final BooleanFlag NOTIFY_CRASHES = getDebugFlag(
|
||||
270393108, "NOTIFY_CRASHES", false,
|
||||
"Sends a notification whenever launcher encounters an uncaught exception.");
|
||||
public static final BooleanFlag NOTIFY_CRASHES = getDebugFlag(270393108, "NOTIFY_CRASHES",
|
||||
DISABLED, "Sends a notification whenever launcher encounters an uncaught exception.");
|
||||
|
||||
public static final BooleanFlag ENABLE_WALLPAPER_SCRIM = getDebugFlag(270393604,
|
||||
"ENABLE_WALLPAPER_SCRIM", false,
|
||||
"ENABLE_WALLPAPER_SCRIM", DISABLED,
|
||||
"Enables scrim over wallpaper for text protection.");
|
||||
|
||||
public static final BooleanFlag WIDGETS_IN_LAUNCHER_PREVIEW = getDebugFlag(270393268,
|
||||
"WIDGETS_IN_LAUNCHER_PREVIEW", true,
|
||||
"WIDGETS_IN_LAUNCHER_PREVIEW", ENABLED,
|
||||
"Enables widgets in Launcher preview for the Wallpaper app.");
|
||||
|
||||
public static final BooleanFlag QUICK_WALLPAPER_PICKER = getDebugFlag(270393112,
|
||||
"QUICK_WALLPAPER_PICKER", true,
|
||||
"Shows quick wallpaper picker in long-press menu");
|
||||
"QUICK_WALLPAPER_PICKER", ENABLED, "Shows quick wallpaper picker in long-press menu");
|
||||
|
||||
public static final BooleanFlag ENABLE_BACK_SWIPE_HOME_ANIMATION = getDebugFlag(270393426,
|
||||
"ENABLE_BACK_SWIPE_HOME_ANIMATION", true,
|
||||
"ENABLE_BACK_SWIPE_HOME_ANIMATION", ENABLED,
|
||||
"Enables home animation to icon when user swipes back.");
|
||||
|
||||
public static final BooleanFlag ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION = getDebugFlag(270614790,
|
||||
"ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION", false,
|
||||
"ENABLE_BACK_SWIPE_LAUNCHER_ANIMATION", DISABLED,
|
||||
"Enables predictive back aniamtion from all apps and widgets to home");
|
||||
|
||||
public static final BooleanFlag ENABLE_ICON_LABEL_AUTO_SCALING = getDebugFlag(270393294,
|
||||
"ENABLE_ICON_LABEL_AUTO_SCALING", true,
|
||||
"ENABLE_ICON_LABEL_AUTO_SCALING", ENABLED,
|
||||
"Enables scaling/spacing for icon labels to make more characters visible");
|
||||
|
||||
public static final BooleanFlag ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT = getDebugFlag(270393897,
|
||||
"ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT", false,
|
||||
"ENABLE_ALL_APPS_BUTTON_IN_HOTSEAT", DISABLED,
|
||||
"Enables displaying the all apps button in the hotseat.");
|
||||
|
||||
public static final BooleanFlag ENABLE_ALL_APPS_ONE_SEARCH_IN_TASKBAR = getDebugFlag(270393900,
|
||||
"ENABLE_ALL_APPS_ONE_SEARCH_IN_TASKBAR", false,
|
||||
"ENABLE_ALL_APPS_ONE_SEARCH_IN_TASKBAR", DISABLED,
|
||||
"Enables One Search box in Taskbar All Apps.");
|
||||
|
||||
public static final BooleanFlag ENABLE_SPLIT_FROM_WORKSPACE = getDebugFlag(270393906,
|
||||
"ENABLE_SPLIT_FROM_WORKSPACE", true,
|
||||
"ENABLE_SPLIT_FROM_WORKSPACE", ENABLED,
|
||||
"Enable initiating split screen from workspace.");
|
||||
|
||||
public static final BooleanFlag ENABLE_SPLIT_FROM_FULLSCREEN_WITH_KEYBOARD_SHORTCUTS =
|
||||
getDebugFlag(270394122, "ENABLE_SPLIT_FROM_FULLSCREEN_SHORTCUT", true,
|
||||
"Enable splitting from fullscreen app with keyboard shortcuts");
|
||||
getDebugFlag(270394122, "ENABLE_SPLIT_FROM_FULLSCREEN_SHORTCUT", ENABLED,
|
||||
"Enable splitting from fullscreen app with keyboard shortcuts");
|
||||
|
||||
public static final BooleanFlag ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE = getDebugFlag(
|
||||
270393453, "ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE", false,
|
||||
270393453, "ENABLE_SPLIT_FROM_WORKSPACE_TO_WORKSPACE", DISABLED,
|
||||
"Enable initiating split screen from workspace to workspace.");
|
||||
|
||||
public static final BooleanFlag ENABLE_NEW_MIGRATION_LOGIC = getDebugFlag(270393455,
|
||||
"ENABLE_NEW_MIGRATION_LOGIC", true,
|
||||
"ENABLE_NEW_MIGRATION_LOGIC", ENABLED,
|
||||
"Enable the new grid migration logic, keeping pages when src < dest");
|
||||
|
||||
public static final BooleanFlag ENABLE_WIDGET_HOST_IN_BACKGROUND = getDebugFlag(270394384,
|
||||
"ENABLE_WIDGET_HOST_IN_BACKGROUND", true,
|
||||
"ENABLE_WIDGET_HOST_IN_BACKGROUND", ENABLED,
|
||||
"Enable background widget updates listening for widget holder");
|
||||
|
||||
public static final BooleanFlag ENABLE_ONE_SEARCH_MOTION = getReleaseFlag(270394223,
|
||||
"ENABLE_ONE_SEARCH_MOTION", true, "Enables animations in OneSearch.");
|
||||
"ENABLE_ONE_SEARCH_MOTION", ENABLED, "Enables animations in OneSearch.");
|
||||
|
||||
public static final BooleanFlag ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES = getReleaseFlag(
|
||||
270394041, "ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES", false,
|
||||
270394041, "ENABLE_SEARCH_RESULT_BACKGROUND_DRAWABLES", DISABLED,
|
||||
"Enable option to replace decorator-based search result backgrounds with drawables");
|
||||
|
||||
public static final BooleanFlag ENABLE_SEARCH_RESULT_LAUNCH_TRANSITION = getReleaseFlag(
|
||||
270394392, "ENABLE_SEARCH_RESULT_LAUNCH_TRANSITION", false,
|
||||
270394392, "ENABLE_SEARCH_RESULT_LAUNCH_TRANSITION", DISABLED,
|
||||
"Enable option to launch search results using the new view container transitions");
|
||||
|
||||
public static final BooleanFlag ENABLE_SHOW_KEYBOARD_OPTION_IN_ALL_APPS = getReleaseFlag(
|
||||
270394468, "ENABLE_SHOW_KEYBOARD_OPTION_IN_ALL_APPS", true,
|
||||
270394468, "ENABLE_SHOW_KEYBOARD_OPTION_IN_ALL_APPS", ENABLED,
|
||||
"Enable option to show keyboard when going to all-apps");
|
||||
|
||||
public static final BooleanFlag USE_LOCAL_ICON_OVERRIDES = getDebugFlag(270394973,
|
||||
"USE_LOCAL_ICON_OVERRIDES", true,
|
||||
"USE_LOCAL_ICON_OVERRIDES", ENABLED,
|
||||
"Use inbuilt monochrome icons if app doesn't provide one");
|
||||
|
||||
public static final BooleanFlag ENABLE_DISMISS_PREDICTION_UNDO = getDebugFlag(270394476,
|
||||
"ENABLE_DISMISS_PREDICTION_UNDO", false,
|
||||
"ENABLE_DISMISS_PREDICTION_UNDO", DISABLED,
|
||||
"Show an 'Undo' snackbar when users dismiss a predicted hotseat item");
|
||||
|
||||
public static final BooleanFlag ENABLE_CACHED_WIDGET = getDebugFlag(270395008,
|
||||
"ENABLE_CACHED_WIDGET", true,
|
||||
"ENABLE_CACHED_WIDGET", ENABLED,
|
||||
"Show previously cached widgets as opposed to deferred widget where available");
|
||||
|
||||
public static final BooleanFlag USE_SEARCH_REQUEST_TIMEOUT_OVERRIDES = getDebugFlag(270395010,
|
||||
"USE_SEARCH_REQUEST_TIMEOUT_OVERRIDES", false,
|
||||
"USE_SEARCH_REQUEST_TIMEOUT_OVERRIDES", DISABLED,
|
||||
"Use local overrides for search request timeout");
|
||||
|
||||
public static final BooleanFlag CONTINUOUS_VIEW_TREE_CAPTURE = getDebugFlag(270395171,
|
||||
"CONTINUOUS_VIEW_TREE_CAPTURE", true, "Capture View tree every frame");
|
||||
"CONTINUOUS_VIEW_TREE_CAPTURE", ENABLED, "Capture View tree every frame");
|
||||
|
||||
public static final BooleanFlag SECONDARY_DRAG_N_DROP_TO_PIN = getDebugFlag(
|
||||
270395140, "SECONDARY_DRAG_N_DROP_TO_PIN", false,
|
||||
public static final BooleanFlag SECONDARY_DRAG_N_DROP_TO_PIN = getDebugFlag(270395140,
|
||||
"SECONDARY_DRAG_N_DROP_TO_PIN", DISABLED,
|
||||
"Enable dragging and dropping to pin apps within secondary display");
|
||||
|
||||
public static final BooleanFlag FOLDABLE_WORKSPACE_REORDER = getDebugFlag(270395070,
|
||||
"FOLDABLE_WORKSPACE_REORDER", false,
|
||||
"FOLDABLE_WORKSPACE_REORDER", DISABLED,
|
||||
"In foldables, when reordering the icons and widgets, is now going to use both sides");
|
||||
|
||||
public static final BooleanFlag ENABLE_MULTI_DISPLAY_PARTIAL_DEPTH = getDebugFlag(270395073,
|
||||
"ENABLE_MULTI_DISPLAY_PARTIAL_DEPTH", false,
|
||||
"ENABLE_MULTI_DISPLAY_PARTIAL_DEPTH", DISABLED,
|
||||
"Allow bottom sheet depth to be smaller than 1 for multi-display devices.");
|
||||
|
||||
public static final BooleanFlag SCROLL_TOP_TO_RESET = getReleaseFlag(
|
||||
270395177, "SCROLL_TOP_TO_RESET", true,
|
||||
public static final BooleanFlag SCROLL_TOP_TO_RESET = getReleaseFlag(270395177,
|
||||
"SCROLL_TOP_TO_RESET", ENABLED,
|
||||
"Bring up IME and focus on input when scroll to top if 'Always show keyboard'"
|
||||
+ " is enabled or in prefix state");
|
||||
|
||||
public static final BooleanFlag ENABLE_MATERIAL_U_POPUP = getDebugFlag(270395516,
|
||||
"ENABLE_MATERIAL_U_POPUP", true, "Switch popup UX to use material U");
|
||||
"ENABLE_MATERIAL_U_POPUP", ENABLED, "Switch popup UX to use material U");
|
||||
|
||||
public static final BooleanFlag ENABLE_SEARCH_UNINSTALLED_APPS = getReleaseFlag(270395269,
|
||||
"ENABLE_SEARCH_UNINSTALLED_APPS", false, "Search uninstalled app results.");
|
||||
"ENABLE_SEARCH_UNINSTALLED_APPS", DISABLED, "Search uninstalled app results.");
|
||||
|
||||
public static final BooleanFlag SHOW_HOME_GARDENING = getDebugFlag(270395183,
|
||||
"SHOW_HOME_GARDENING", false,
|
||||
"Show the new home gardening mode");
|
||||
"SHOW_HOME_GARDENING", DISABLED, "Show the new home gardening mode");
|
||||
|
||||
public static final BooleanFlag HOME_GARDENING_WORKSPACE_BUTTONS = getDebugFlag(270395133,
|
||||
"HOME_GARDENING_WORKSPACE_BUTTONS", false,
|
||||
"HOME_GARDENING_WORKSPACE_BUTTONS", DISABLED,
|
||||
"Change workspace edit buttons to reflect home gardening");
|
||||
|
||||
public static final BooleanFlag ENABLE_DOWNLOAD_APP_UX_V2 = getReleaseFlag(270395134,
|
||||
"ENABLE_DOWNLOAD_APP_UX_V2", true, "Updates the download app UX"
|
||||
"ENABLE_DOWNLOAD_APP_UX_V2", ENABLED, "Updates the download app UX"
|
||||
+ " to have better visuals");
|
||||
|
||||
public static final BooleanFlag ENABLE_DOWNLOAD_APP_UX_V3 = getDebugFlag(270395186,
|
||||
"ENABLE_DOWNLOAD_APP_UX_V3", false, "Updates the download app UX"
|
||||
"ENABLE_DOWNLOAD_APP_UX_V3", DISABLED, "Updates the download app UX"
|
||||
+ " to have better visuals, improve contrast, and color");
|
||||
|
||||
public static final BooleanFlag FORCE_PERSISTENT_TASKBAR = getDebugFlag(270395077,
|
||||
"FORCE_PERSISTENT_TASKBAR", false, "Forces taskbar to be persistent, even in gesture"
|
||||
"FORCE_PERSISTENT_TASKBAR", DISABLED, "Forces taskbar to be persistent, even in gesture"
|
||||
+ " nav mode and when transient taskbar is enabled.");
|
||||
|
||||
public static final BooleanFlag FOLDABLE_SINGLE_PAGE = getDebugFlag(270395274,
|
||||
"FOLDABLE_SINGLE_PAGE", true,
|
||||
"Use a single page for the workspace");
|
||||
"FOLDABLE_SINGLE_PAGE", ENABLED, "Use a single page for the workspace");
|
||||
|
||||
public static final BooleanFlag ENABLE_TRANSIENT_TASKBAR = getDebugFlag(270395798,
|
||||
"ENABLE_TRANSIENT_TASKBAR", true, "Enables transient taskbar.");
|
||||
"ENABLE_TRANSIENT_TASKBAR", ENABLED, "Enables transient taskbar.");
|
||||
|
||||
public static final BooleanFlag ENABLE_TRACKPAD_GESTURE = getDebugFlag(271010401,
|
||||
"ENABLE_TRACKPAD_GESTURE", true, "Enables trackpad gesture.");
|
||||
"ENABLE_TRACKPAD_GESTURE", ENABLED, "Enables trackpad gesture.");
|
||||
|
||||
public static final BooleanFlag ENABLE_ICON_IN_TEXT_HEADER = getDebugFlag(270395143,
|
||||
"ENABLE_ICON_IN_TEXT_HEADER", false, "Show icon in textheader");
|
||||
"ENABLE_ICON_IN_TEXT_HEADER", DISABLED, "Show icon in textheader");
|
||||
|
||||
public static final BooleanFlag ENABLE_APP_ICON_FOR_INLINE_SHORTCUTS = getDebugFlag(270395087,
|
||||
"ENABLE_APP_ICON_IN_INLINE_SHORTCUTS", false, "Show app icon for inline shortcut");
|
||||
"ENABLE_APP_ICON_IN_INLINE_SHORTCUTS", DISABLED, "Show app icon for inline shortcut");
|
||||
|
||||
public static final BooleanFlag SHOW_DOT_PAGINATION = getDebugFlag(270395278,
|
||||
"SHOW_DOT_PAGINATION", true, "Enable showing dot pagination in workspace");
|
||||
"SHOW_DOT_PAGINATION", ENABLED, "Enable showing dot pagination in workspace");
|
||||
|
||||
public static final BooleanFlag LARGE_SCREEN_WIDGET_PICKER = getDebugFlag(270395809,
|
||||
"LARGE_SCREEN_WIDGET_PICKER", true, "Enable new widget picker that takes "
|
||||
"LARGE_SCREEN_WIDGET_PICKER", ENABLED, "Enable new widget picker that takes "
|
||||
+ "advantage of large screen format");
|
||||
|
||||
public static final BooleanFlag ENABLE_NEW_GESTURE_NAV_TUTORIAL = getDebugFlag(270396257,
|
||||
"ENABLE_NEW_GESTURE_NAV_TUTORIAL", true,
|
||||
"ENABLE_NEW_GESTURE_NAV_TUTORIAL", ENABLED,
|
||||
"Enable the redesigned gesture navigation tutorial");
|
||||
|
||||
public static final BooleanFlag ENABLE_LAUNCH_FROM_STAGED_APP = getDebugFlag(270395567,
|
||||
"ENABLE_LAUNCH_FROM_STAGED_APP", true,
|
||||
"Enable the ability to tap a staged app during split select to launch it in full screen"
|
||||
);
|
||||
"ENABLE_LAUNCH_FROM_STAGED_APP", ENABLED,
|
||||
"Enable the ability to tap a staged app during split select to launch it in full "
|
||||
+ "screen");
|
||||
|
||||
public static final BooleanFlag ENABLE_PREMIUM_HAPTICS_ALL_APPS = getDebugFlag(270396358,
|
||||
"ENABLE_PREMIUM_HAPTICS_ALL_APPS", false,
|
||||
"ENABLE_PREMIUM_HAPTICS_ALL_APPS", DISABLED,
|
||||
"Enables haptics opening/closing All apps");
|
||||
|
||||
public static final BooleanFlag ENABLE_FORCED_MONO_ICON = getDebugFlag(270396209,
|
||||
"ENABLE_FORCED_MONO_ICON", false,
|
||||
"Enable the ability to generate monochromatic icons, if it is not provided by the app"
|
||||
);
|
||||
"ENABLE_FORCED_MONO_ICON", DISABLED,
|
||||
"Enable the ability to generate monochromatic icons, if it is not provided by the app");
|
||||
|
||||
public static final BooleanFlag ENABLE_TASKBAR_EDU_TOOLTIP = getDebugFlag(270396268,
|
||||
"ENABLE_TASKBAR_EDU_TOOLTIP", true,
|
||||
"ENABLE_TASKBAR_EDU_TOOLTIP", ENABLED,
|
||||
"Enable the tooltip version of the Taskbar education flow.");
|
||||
|
||||
public static final BooleanFlag ENABLE_MULTI_INSTANCE = getDebugFlag(270396680,
|
||||
"ENABLE_MULTI_INSTANCE", false,
|
||||
"ENABLE_MULTI_INSTANCE", DISABLED,
|
||||
"Enables creation and filtering of multiple task instances in overview");
|
||||
|
||||
public static final BooleanFlag ENABLE_TASKBAR_PINNING = getDebugFlag(270396583,
|
||||
"ENABLE_TASKBAR_PINNING", false,
|
||||
"ENABLE_TASKBAR_PINNING", DISABLED,
|
||||
"Enables taskbar pinning to allow user to switch between transient and persistent "
|
||||
+ "taskbar flavors");
|
||||
|
||||
public static final BooleanFlag ENABLE_WORKSPACE_LOADING_OPTIMIZATION = getDebugFlag(251502424,
|
||||
"ENABLE_WORKSPACE_LOADING_OPTIMIZATION", false, "load the current workspace screen "
|
||||
+ "visible to the user before the rest rather than loading all of them at once."
|
||||
);
|
||||
"ENABLE_WORKSPACE_LOADING_OPTIMIZATION", DISABLED,
|
||||
"load the current workspace screen visible to the user before the rest rather than "
|
||||
+ "loading all of them at once.");
|
||||
|
||||
public static final BooleanFlag ENABLE_GRID_ONLY_OVERVIEW = getDebugFlag(270397206,
|
||||
"ENABLE_GRID_ONLY_OVERVIEW", false,
|
||||
"ENABLE_GRID_ONLY_OVERVIEW", DISABLED,
|
||||
"Enable a grid-only overview without a focused task.");
|
||||
|
||||
public static final BooleanFlag RECEIVE_UNFOLD_EVENTS_FROM_SYSUI = getDebugFlag(270397209,
|
||||
"RECEIVE_UNFOLD_EVENTS_FROM_SYSUI", true,
|
||||
"RECEIVE_UNFOLD_EVENTS_FROM_SYSUI", ENABLED,
|
||||
"Enables receiving unfold animation events from sysui instead of calculating "
|
||||
+ "them in launcher process using hinge sensor values.");
|
||||
|
||||
public static final BooleanFlag ENABLE_KEYBOARD_QUICK_SWITCH = getDebugFlag(270396844,
|
||||
"ENABLE_KEYBOARD_QUICK_SWITCH", true,
|
||||
"Enables keyboard quick switching");
|
||||
"ENABLE_KEYBOARD_QUICK_SWITCH", ENABLED, "Enables keyboard quick switching");
|
||||
|
||||
public static final BooleanFlag ENABLE_APP_CLONING_CHANGES_IN_LAUNCHER = getDebugFlag(266177840,
|
||||
"ENABLE_APP_CLONING_CHANGES_IN_LAUNCHER", false,
|
||||
"ENABLE_APP_CLONING_CHANGES_IN_LAUNCHER", DISABLED,
|
||||
"Removes clone apps from the work profile tab.");
|
||||
|
||||
public static final BooleanFlag ENABLE_APP_PAIRS = getDebugFlag(274189428,
|
||||
"ENABLE_APP_PAIRS", false,
|
||||
"ENABLE_APP_PAIRS", DISABLED,
|
||||
"Enables the ability to create and save app pairs on the Home screen for easy"
|
||||
+ " split screen launching.");
|
||||
|
||||
@@ -437,4 +428,13 @@ public final class FeatureFlags {
|
||||
return sIntReader.applyAsInt(this);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enabled state for a flag
|
||||
*/
|
||||
public enum FlagState {
|
||||
ENABLED,
|
||||
DISABLED,
|
||||
TEAMFOOD // Enabled in team food
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,10 @@
|
||||
|
||||
package com.android.launcher3.uioverrides.flags;
|
||||
|
||||
import static com.android.launcher3.config.FeatureFlags.FlagState.ENABLED;
|
||||
|
||||
import com.android.launcher3.config.FeatureFlags.BooleanFlag;
|
||||
import com.android.launcher3.config.FeatureFlags.FlagState;
|
||||
import com.android.launcher3.config.FeatureFlags.IntFlag;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
@@ -31,16 +34,16 @@ public class FlagsFactory {
|
||||
* Creates a new debug flag
|
||||
*/
|
||||
public static BooleanFlag getDebugFlag(
|
||||
int bugId, String key, boolean defaultValue, String description) {
|
||||
return new BooleanFlag(defaultValue);
|
||||
int bugId, String key, FlagState flagState, String description) {
|
||||
return new BooleanFlag(flagState == ENABLED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new debug flag
|
||||
*/
|
||||
public static BooleanFlag getReleaseFlag(
|
||||
int bugId, String key, boolean defaultValueInCode, String description) {
|
||||
return new BooleanFlag(defaultValueInCode);
|
||||
int bugId, String key, FlagState flagState, String description) {
|
||||
return new BooleanFlag(flagState == ENABLED);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user