summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVadim Tryshev <vadimt@google.com>2019-06-07 01:34:30 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-06-07 01:34:30 +0000
commit9d14e5520e56049bf88cedfda59a1de53845ea95 (patch)
treeda815c17ec12929c99c51b5fd2dc2b97a719dda9 /src
parent51d2cf913c18787ec28334737c29ad36f4f7a815 (diff)
parentd4c90e12e9b6b61d3c0374ee5899425c84ffe65b (diff)
downloadandroid_packages_apps_Trebuchet-9d14e5520e56049bf88cedfda59a1de53845ea95.tar.gz
android_packages_apps_Trebuchet-9d14e5520e56049bf88cedfda59a1de53845ea95.tar.bz2
android_packages_apps_Trebuchet-9d14e5520e56049bf88cedfda59a1de53845ea95.zip
Merge "Freezing all apps updates during certain tests" into ub-launcher3-qt-r1-dev
Diffstat (limited to 'src')
-rw-r--r--src/com/android/launcher3/Launcher.java6
-rw-r--r--src/com/android/launcher3/allapps/AllAppsContainerView.java5
-rw-r--r--src/com/android/launcher3/allapps/AllAppsStore.java31
-rw-r--r--src/com/android/launcher3/testing/TestInformationHandler.java30
-rw-r--r--src/com/android/launcher3/testing/TestProtocol.java5
5 files changed, 63 insertions, 14 deletions
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 57a9b161f..151e2ca13 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -80,6 +80,7 @@ import android.widget.Toast;
import com.android.launcher3.DropTarget.DragObject;
import com.android.launcher3.accessibility.LauncherAccessibilityDelegate;
import com.android.launcher3.allapps.AllAppsContainerView;
+import com.android.launcher3.allapps.AllAppsStore;
import com.android.launcher3.allapps.AllAppsTransitionController;
import com.android.launcher3.allapps.DiscoveryBounce;
import com.android.launcher3.anim.PropertyListBuilder;
@@ -2241,8 +2242,9 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
}
mPendingExecutor = executor;
if (!isInState(ALL_APPS)) {
- mAppsView.getAppsStore().setDeferUpdates(true);
- mPendingExecutor.execute(() -> mAppsView.getAppsStore().setDeferUpdates(false));
+ mAppsView.getAppsStore().enableDeferUpdates(AllAppsStore.DEFER_UPDATES_NEXT_DRAW);
+ mPendingExecutor.execute(() -> mAppsView.getAppsStore().disableDeferUpdates(
+ AllAppsStore.DEFER_UPDATES_NEXT_DRAW));
}
executor.attachTo(this);
diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java
index 0d43e214e..d68ff4451 100644
--- a/src/com/android/launcher3/allapps/AllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java
@@ -628,11 +628,12 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo
final boolean result = super.dispatchTouchEvent(ev);
switch (ev.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
- if (result) mAllAppsStore.setDeferUpdates(true);
+ if (result) mAllAppsStore.enableDeferUpdates(
+ AllAppsStore.DEFER_UPDATES_USER_INTERACTION);
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
- mAllAppsStore.setDeferUpdates(false);
+ mAllAppsStore.disableDeferUpdates(AllAppsStore.DEFER_UPDATES_USER_INTERACTION);
break;
}
return result;
diff --git a/src/com/android/launcher3/allapps/AllAppsStore.java b/src/com/android/launcher3/allapps/AllAppsStore.java
index 8e7fec863..160042e69 100644
--- a/src/com/android/launcher3/allapps/AllAppsStore.java
+++ b/src/com/android/launcher3/allapps/AllAppsStore.java
@@ -29,7 +29,6 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
-import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Predicate;
@@ -38,12 +37,19 @@ import java.util.function.Predicate;
*/
public class AllAppsStore {
+ // Defer updates flag used to defer all apps updates to the next draw.
+ public static final int DEFER_UPDATES_NEXT_DRAW = 1 << 0;
+ // Defer updates flag used to defer all apps updates while the user interacts with all apps.
+ public static final int DEFER_UPDATES_USER_INTERACTION = 1 << 1;
+ // Defer updates flag used to defer all apps updates by a test's request.
+ public static final int DEFER_UPDATES_TEST = 1 << 2;
+
private PackageUserKey mTempKey = new PackageUserKey(null, null);
private final HashMap<ComponentKey, AppInfo> mComponentToAppMap = new HashMap<>();
private final List<OnUpdateListener> mUpdateListeners = new ArrayList<>();
private final ArrayList<ViewGroup> mIconContainers = new ArrayList<>();
- private boolean mDeferUpdates = false;
+ private int mDeferUpdatesFlags = 0;
private boolean mUpdatePending = false;
public Collection<AppInfo> getApps() {
@@ -62,17 +68,22 @@ public class AllAppsStore {
return mComponentToAppMap.get(key);
}
- public void setDeferUpdates(boolean deferUpdates) {
- if (mDeferUpdates != deferUpdates) {
- mDeferUpdates = deferUpdates;
+ public void enableDeferUpdates(int flag) {
+ mDeferUpdatesFlags |= flag;
+ }
- if (!mDeferUpdates && mUpdatePending) {
- notifyUpdate();
- mUpdatePending = false;
- }
+ public void disableDeferUpdates(int flag) {
+ mDeferUpdatesFlags &= ~flag;
+ if (mDeferUpdatesFlags == 0 && mUpdatePending) {
+ notifyUpdate();
+ mUpdatePending = false;
}
}
+ public int getDeferUpdatesFlags() {
+ return mDeferUpdatesFlags;
+ }
+
/**
* Adds or updates existing apps in the list
*/
@@ -95,7 +106,7 @@ public class AllAppsStore {
private void notifyUpdate() {
- if (mDeferUpdates) {
+ if (mDeferUpdatesFlags != 0) {
mUpdatePending = true;
return;
}
diff --git a/src/com/android/launcher3/testing/TestInformationHandler.java b/src/com/android/launcher3/testing/TestInformationHandler.java
index b8476aa1d..d2e196138 100644
--- a/src/com/android/launcher3/testing/TestInformationHandler.java
+++ b/src/com/android/launcher3/testing/TestInformationHandler.java
@@ -23,9 +23,13 @@ import com.android.launcher3.InvariantDeviceProfile;
import com.android.launcher3.Launcher;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.LauncherState;
+import com.android.launcher3.MainThreadExecutor;
import com.android.launcher3.R;
+import com.android.launcher3.allapps.AllAppsStore;
import com.android.launcher3.util.ResourceBasedOverride;
+import java.util.concurrent.ExecutionException;
+
public class TestInformationHandler implements ResourceBasedOverride {
public static TestInformationHandler newInstance(Context context) {
@@ -77,6 +81,32 @@ public class TestInformationHandler implements ResourceBasedOverride {
case TestProtocol.REQUEST_DISABLE_DEBUG_TRACING:
TestProtocol.sDebugTracing = false;
break;
+
+ case TestProtocol.REQUEST_FREEZE_APP_LIST:
+ new MainThreadExecutor().execute(() ->
+ mLauncher.getAppsView().getAppsStore().enableDeferUpdates(
+ AllAppsStore.DEFER_UPDATES_TEST));
+ break;
+
+ case TestProtocol.REQUEST_UNFREEZE_APP_LIST:
+ new MainThreadExecutor().execute(() ->
+ mLauncher.getAppsView().getAppsStore().disableDeferUpdates(
+ AllAppsStore.DEFER_UPDATES_TEST));
+ break;
+
+ case TestProtocol.REQUEST_APP_LIST_FREEZE_FLAGS: {
+ try {
+ final int deferUpdatesFlags = new MainThreadExecutor().submit(() ->
+ mLauncher.getAppsView().getAppsStore().getDeferUpdatesFlags()).get();
+ response.putInt(TestProtocol.TEST_INFO_RESPONSE_FIELD,
+ deferUpdatesFlags);
+ } catch (ExecutionException e) {
+ throw new RuntimeException(e);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ break;
+ }
}
return response;
}
diff --git a/src/com/android/launcher3/testing/TestProtocol.java b/src/com/android/launcher3/testing/TestProtocol.java
index 02e6bbdd7..6ffc2d9cd 100644
--- a/src/com/android/launcher3/testing/TestProtocol.java
+++ b/src/com/android/launcher3/testing/TestProtocol.java
@@ -57,6 +57,7 @@ public final class TestProtocol {
}
public static final String TEST_INFO_RESPONSE_FIELD = "response";
+
public static final String REQUEST_HOME_TO_OVERVIEW_SWIPE_HEIGHT =
"home-to-overview-swipe-height";
public static final String REQUEST_BACKGROUND_TO_OVERVIEW_SWIPE_HEIGHT =
@@ -65,6 +66,10 @@ public final class TestProtocol {
"all-apps-to-overview-swipe-height";
public static final String REQUEST_HOME_TO_ALL_APPS_SWIPE_HEIGHT =
"home-to-all-apps-swipe-height";
+ public static final String REQUEST_FREEZE_APP_LIST = "freeze-app-list";
+ public static final String REQUEST_UNFREEZE_APP_LIST = "unfreeze-app-list";
+ public static final String REQUEST_APP_LIST_FREEZE_FLAGS = "app-list-freeze-flags";
+
public static boolean sDebugTracing = false;
public static final String REQUEST_ENABLE_DEBUG_TRACING = "enable-debug-tracing";
public static final String REQUEST_DISABLE_DEBUG_TRACING = "disable-debug-tracing";