summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--go/src_flags/com/android/launcher3/config/FeatureFlags.java7
-rw-r--r--src/com/android/launcher3/Launcher.java8
-rw-r--r--src/com/android/launcher3/LauncherProvider.java2
-rw-r--r--src/com/android/launcher3/Workspace.java6
-rw-r--r--src/com/android/launcher3/config/BaseFlags.java16
-rw-r--r--src/com/android/launcher3/model/GridSizeMigrationTask.java4
-rw-r--r--src/com/android/launcher3/model/LoaderCursor.java3
-rw-r--r--src/com/android/launcher3/provider/ImportDataTask.java2
-rw-r--r--src/com/android/launcher3/qsb/QsbContainerView.java2
-rw-r--r--src_flags/com/android/launcher3/config/FeatureFlags.java7
10 files changed, 41 insertions, 16 deletions
diff --git a/go/src_flags/com/android/launcher3/config/FeatureFlags.java b/go/src_flags/com/android/launcher3/config/FeatureFlags.java
index b11bb7c6a..6be9de805 100644
--- a/go/src_flags/com/android/launcher3/config/FeatureFlags.java
+++ b/go/src_flags/com/android/launcher3/config/FeatureFlags.java
@@ -16,10 +16,17 @@
package com.android.launcher3.config;
+import android.content.Context;
+
/**
* Defines a set of flags used to control various launcher behaviors
*/
public final class FeatureFlags extends BaseFlags {
+ private static FeatureFlags instance = new FeatureFlags();
+
+ public static FeatureFlags getInstance(Context context) {
+ return instance;
+ }
private FeatureFlags() {}
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index bbe5b78f4..5eb568853 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -1752,12 +1752,13 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
@Override
public void bindScreens(ArrayList<Long> orderedScreenIds) {
// Make sure the first screen is always at the start.
- if (FeatureFlags.QSB_ON_FIRST_SCREEN &&
+ if (FeatureFlags.getInstance(this).isQsbOnFirstScreenEnabled() &&
orderedScreenIds.indexOf(Workspace.FIRST_SCREEN_ID) != 0) {
orderedScreenIds.remove(Workspace.FIRST_SCREEN_ID);
orderedScreenIds.add(0, Workspace.FIRST_SCREEN_ID);
LauncherModel.updateWorkspaceScreenOrder(this, orderedScreenIds);
- } else if (!FeatureFlags.QSB_ON_FIRST_SCREEN && orderedScreenIds.isEmpty()) {
+ } else if (!FeatureFlags.getInstance(this).isQsbOnFirstScreenEnabled()
+ && orderedScreenIds.isEmpty()) {
// If there are no screens, we need to have an empty screen
mWorkspace.addExtraEmptyScreen();
}
@@ -1773,7 +1774,8 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
int count = orderedScreenIds.size();
for (int i = 0; i < count; i++) {
long screenId = orderedScreenIds.get(i);
- if (!FeatureFlags.QSB_ON_FIRST_SCREEN || screenId != Workspace.FIRST_SCREEN_ID) {
+ if (!FeatureFlags.getInstance(this).isQsbOnFirstScreenEnabled()
+ || screenId != Workspace.FIRST_SCREEN_ID) {
// No need to bind the first screen, as its always bound.
mWorkspace.insertNewWorkspaceScreenBeforeEmptyScreen(screenId);
}
diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java
index 7d208d48d..ddb2721c3 100644
--- a/src/com/android/launcher3/LauncherProvider.java
+++ b/src/com/android/launcher3/LauncherProvider.java
@@ -789,7 +789,7 @@ public class LauncherProvider extends ContentProvider {
convertShortcutsToLauncherActivities(db);
case 26:
// QSB was moved to the grid. Clear the first row on screen 0.
- if (FeatureFlags.QSB_ON_FIRST_SCREEN &&
+ if (FeatureFlags.getInstance(mContext).isQsbOnFirstScreenEnabled() &&
!LauncherDbUtils.prepareScreenZeroToHostQsb(mContext, db)) {
break;
}
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index b5a770f6c..df434837e 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -479,7 +479,7 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
* @param qsb an existing qsb to recycle or null.
*/
public void bindAndInitFirstWorkspaceScreen(View qsb) {
- if (!FeatureFlags.QSB_ON_FIRST_SCREEN) {
+ if (!FeatureFlags.getInstance(getContext()).isQsbOnFirstScreenEnabled()) {
return;
}
// Add the first page
@@ -778,7 +778,9 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
long id = mWorkspaceScreens.keyAt(i);
CellLayout cl = mWorkspaceScreens.valueAt(i);
// FIRST_SCREEN_ID can never be removed.
- if ((!FeatureFlags.QSB_ON_FIRST_SCREEN || id > FIRST_SCREEN_ID)
+ boolean qsbFirstScreenEnabled =
+ FeatureFlags.getInstance(getContext()).isQsbOnFirstScreenEnabled();
+ if ((!qsbFirstScreenEnabled || id > FIRST_SCREEN_ID)
&& cl.getShortcutsAndWidgets().getChildCount() == 0) {
removeScreens.add(id);
}
diff --git a/src/com/android/launcher3/config/BaseFlags.java b/src/com/android/launcher3/config/BaseFlags.java
index b67d35bd6..7332e3613 100644
--- a/src/com/android/launcher3/config/BaseFlags.java
+++ b/src/com/android/launcher3/config/BaseFlags.java
@@ -19,14 +19,16 @@ package com.android.launcher3.config;
/**
* Defines a set of flags used to control various launcher behaviors.
*
- * All the flags should be defined here with appropriate default values. To override a value,
- * redefine it in {@link FeatureFlags}.
+ * <p>All the flags should be defined here with appropriate default values.
*
- * This class is kept package-private to prevent direct access.
+ * <p>This class is kept package-private to prevent direct access.
*/
abstract class BaseFlags {
- BaseFlags() {}
+ private static final String TAG = "FeatureFlags";
+
+ BaseFlags() {
+ }
public static final boolean IS_DOGFOOD_BUILD = false;
public static final String AUTHORITY = "com.android.launcher3.settings".intern();
@@ -34,8 +36,10 @@ abstract class BaseFlags {
// When enabled the promise icon is visible in all apps while installation an app.
public static final boolean LAUNCHER3_PROMISE_APPS_IN_ALL_APPS = false;
- // Feature flag to enable moving the QSB on the 0th screen of the workspace.
- public static final boolean QSB_ON_FIRST_SCREEN = true;
+ /** Feature flag to enable moving the QSB on the 0th screen of the workspace. */
+ public boolean isQsbOnFirstScreenEnabled() {
+ return true;
+ }
//Feature flag to enable pulling down navigation shade from workspace.
public static final boolean PULL_DOWN_STATUS_BAR = true;
diff --git a/src/com/android/launcher3/model/GridSizeMigrationTask.java b/src/com/android/launcher3/model/GridSizeMigrationTask.java
index 12daea50f..fc3ca762c 100644
--- a/src/com/android/launcher3/model/GridSizeMigrationTask.java
+++ b/src/com/android/launcher3/model/GridSizeMigrationTask.java
@@ -251,7 +251,9 @@ public class GridSizeMigrationTask {
*/
protected void migrateScreen(long screenId) {
// If we are migrating the first screen, do not touch the first row.
- int startY = (FeatureFlags.QSB_ON_FIRST_SCREEN && screenId == Workspace.FIRST_SCREEN_ID)
+ int startY =
+ (FeatureFlags.getInstance(mContext).isQsbOnFirstScreenEnabled()
+ && screenId == Workspace.FIRST_SCREEN_ID)
? 1 : 0;
ArrayList<DbEntry> items = loadWorkspaceEntries(screenId);
diff --git a/src/com/android/launcher3/model/LoaderCursor.java b/src/com/android/launcher3/model/LoaderCursor.java
index 87aef02f7..958e1de76 100644
--- a/src/com/android/launcher3/model/LoaderCursor.java
+++ b/src/com/android/launcher3/model/LoaderCursor.java
@@ -440,7 +440,8 @@ public class LoaderCursor extends CursorWrapper {
if (item.screenId == Workspace.FIRST_SCREEN_ID) {
// Mark the first row as occupied (if the feature is enabled)
// in order to account for the QSB.
- screen.markCells(0, 0, countX + 1, 1, FeatureFlags.QSB_ON_FIRST_SCREEN);
+ screen.markCells(0, 0, countX + 1, 1,
+ FeatureFlags.getInstance(mContext).isQsbOnFirstScreenEnabled());
}
occupied.put(item.screenId, screen);
}
diff --git a/src/com/android/launcher3/provider/ImportDataTask.java b/src/com/android/launcher3/provider/ImportDataTask.java
index 16c7417aa..59c3c7217 100644
--- a/src/com/android/launcher3/provider/ImportDataTask.java
+++ b/src/com/android/launcher3/provider/ImportDataTask.java
@@ -133,7 +133,7 @@ public class ImportDataTask {
.getSerialNumberForUser(Process.myUserHandle()));
boolean createEmptyRowOnFirstScreen;
- if (FeatureFlags.QSB_ON_FIRST_SCREEN) {
+ if (FeatureFlags.getInstance(mContext).isQsbOnFirstScreenEnabled()) {
try (Cursor c = mContext.getContentResolver().query(mOtherFavoritesUri, null,
// get items on the first row of the first screen
"profileId = ? AND container = -100 AND screen = ? AND cellY = 0",
diff --git a/src/com/android/launcher3/qsb/QsbContainerView.java b/src/com/android/launcher3/qsb/QsbContainerView.java
index 5b8ae5836..82ab15c29 100644
--- a/src/com/android/launcher3/qsb/QsbContainerView.java
+++ b/src/com/android/launcher3/qsb/QsbContainerView.java
@@ -213,7 +213,7 @@ public class QsbContainerView extends FrameLayout {
}
public boolean isQsbEnabled() {
- return FeatureFlags.QSB_ON_FIRST_SCREEN;
+ return FeatureFlags.getInstance(getContext()).isQsbOnFirstScreenEnabled();
}
protected Bundle createBindOptions() {
diff --git a/src_flags/com/android/launcher3/config/FeatureFlags.java b/src_flags/com/android/launcher3/config/FeatureFlags.java
index 3ffb6c937..f02f2271e 100644
--- a/src_flags/com/android/launcher3/config/FeatureFlags.java
+++ b/src_flags/com/android/launcher3/config/FeatureFlags.java
@@ -16,10 +16,17 @@
package com.android.launcher3.config;
+import android.content.Context;
+
/**
* Defines a set of flags used to control various launcher behaviors
*/
public final class FeatureFlags extends BaseFlags {
+ private static FeatureFlags instance = new FeatureFlags();
+
+ public static FeatureFlags getInstance(Context context) {
+ return instance;
+ }
private FeatureFlags() {}
}