summaryrefslogtreecommitdiffstats
path: root/quickstep
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2018-06-22 00:57:57 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-06-22 00:57:57 +0000
commitf6ab06df8bd0baffef758579f901772237debf36 (patch)
tree309b63583ca44eb253eb2ca6f0880b853a12acf1 /quickstep
parent07fcd3bea29965239a9756b05e3572e0808abd75 (diff)
parentb44c6552b3f3d02a1dd5e92fce798b12b0d0d945 (diff)
downloadandroid_packages_apps_Trebuchet-f6ab06df8bd0baffef758579f901772237debf36.tar.gz
android_packages_apps_Trebuchet-f6ab06df8bd0baffef758579f901772237debf36.tar.bz2
android_packages_apps_Trebuchet-f6ab06df8bd0baffef758579f901772237debf36.zip
Merge "Fetching assist data only if required by overlay" into ub-launcher3-edmonton-polish
Diffstat (limited to 'quickstep')
-rw-r--r--quickstep/src/com/android/launcher3/uioverrides/OverviewState.java2
-rw-r--r--quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java20
-rw-r--r--quickstep/src/com/android/quickstep/RecentsModel.java4
-rw-r--r--quickstep/src/com/android/quickstep/TaskOverlayFactory.java6
-rw-r--r--quickstep/src/com/android/quickstep/TouchInteractionService.java4
-rw-r--r--quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java65
6 files changed, 78 insertions, 23 deletions
diff --git a/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java b/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java
index 1e1031958..7f956f8a2 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/OverviewState.java
@@ -29,6 +29,7 @@ import com.android.launcher3.R;
import com.android.launcher3.Workspace;
import com.android.launcher3.allapps.DiscoveryBounce;
import com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
+import com.android.quickstep.RecentsModel;
import com.android.quickstep.views.RecentsView;
/**
@@ -76,6 +77,7 @@ public class OverviewState extends LauncherState {
public void onStateDisabled(Launcher launcher) {
RecentsView rv = launcher.getOverviewPanel();
rv.setOverviewStateEnabled(false);
+ RecentsModel.getInstance(launcher).resetAssistCache();
}
@Override
diff --git a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
index c85628263..0e811f771 100644
--- a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
+++ b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
@@ -78,6 +78,7 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC
private final MainThreadExecutor mMainThreadExecutor;
private final Choreographer mBackgroundThreadChoreographer;
private final OverviewCallbacks mOverviewCallbacks;
+ private final TaskOverlayFactory mTaskOverlayFactory;
private final boolean mIsDeferredDownTarget;
private final PointF mDownPos = new PointF();
@@ -99,7 +100,7 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC
RecentsModel recentsModel, Intent homeIntent, ActivityControlHelper activityControl,
MainThreadExecutor mainThreadExecutor, Choreographer backgroundThreadChoreographer,
@HitTarget int downHitTarget, OverviewCallbacks overviewCallbacks,
- VelocityTracker velocityTracker) {
+ TaskOverlayFactory taskOverlayFactory, VelocityTracker velocityTracker) {
super(base);
mRunningTask = runningTaskInfo;
@@ -111,6 +112,7 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC
mBackgroundThreadChoreographer = backgroundThreadChoreographer;
mIsDeferredDownTarget = activityControl.deferStartingActivity(downHitTarget);
mOverviewCallbacks = overviewCallbacks;
+ mTaskOverlayFactory = taskOverlayFactory;
}
@Override
@@ -233,14 +235,22 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC
handler.initWhenReady();
TraceHelper.beginSection("RecentsController");
- Runnable startActivity = () -> ActivityManagerWrapper.getInstance().startRecentsActivity(
- mHomeIntent,
+
+ AssistDataReceiver assistDataReceiver = !mTaskOverlayFactory.needAssist() ? null :
new AssistDataReceiver() {
@Override
public void onHandleAssistData(Bundle bundle) {
- mRecentsModel.preloadAssistData(mRunningTask.id, bundle);
+ if (mInteractionHandler == null) {
+ // Interaction is probably complete
+ mRecentsModel.preloadAssistData(mRunningTask.id, bundle);
+ } else if (handler == mInteractionHandler) {
+ handler.onAssistDataReceived(bundle);
+ }
}
- }, animationState, null, null);
+ };
+
+ Runnable startActivity = () -> ActivityManagerWrapper.getInstance().startRecentsActivity(
+ mHomeIntent, assistDataReceiver, animationState, null, null);
if (Looper.myLooper() != Looper.getMainLooper()) {
startActivity.run();
diff --git a/quickstep/src/com/android/quickstep/RecentsModel.java b/quickstep/src/com/android/quickstep/RecentsModel.java
index 9c2c8b313..0c8e47f2b 100644
--- a/quickstep/src/com/android/quickstep/RecentsModel.java
+++ b/quickstep/src/com/android/quickstep/RecentsModel.java
@@ -256,6 +256,10 @@ public class RecentsModel extends TaskStackChangeListener {
}
}
+ public void resetAssistCache() {
+ mCachedAssistData.clear();
+ }
+
@WorkerThread
public void preloadAssistData(int taskId, Bundle data) {
mMainThreadExecutor.execute(() -> {
diff --git a/quickstep/src/com/android/quickstep/TaskOverlayFactory.java b/quickstep/src/com/android/quickstep/TaskOverlayFactory.java
index 66969c65a..9d3ac6af6 100644
--- a/quickstep/src/com/android/quickstep/TaskOverlayFactory.java
+++ b/quickstep/src/com/android/quickstep/TaskOverlayFactory.java
@@ -18,6 +18,7 @@ package com.android.quickstep;
import android.content.Context;
import android.graphics.Matrix;
+import android.support.annotation.AnyThread;
import android.view.View;
import com.android.launcher3.R;
@@ -42,6 +43,11 @@ public class TaskOverlayFactory {
return sInstance;
}
+ @AnyThread
+ public boolean needAssist() {
+ return false;
+ }
+
public TaskOverlay createOverlay(View thumbnailView) {
return new TaskOverlay();
}
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index 49a4ac8ba..6c542628e 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -171,6 +171,7 @@ public class TouchInteractionService extends Service {
private OverviewCommandHelper mOverviewCommandHelper;
private OverviewInteractionState mOverviewInteractionState;
private OverviewCallbacks mOverviewCallbacks;
+ private TaskOverlayFactory mTaskOverlayFactory;
private Choreographer mMainThreadChoreographer;
private Choreographer mBackgroundThreadChoreographer;
@@ -187,6 +188,7 @@ public class TouchInteractionService extends Service {
mEventQueue = new MotionEventQueue(mMainThreadChoreographer, mNoOpTouchConsumer);
mOverviewInteractionState = OverviewInteractionState.getInstance(this);
mOverviewCallbacks = OverviewCallbacks.get(this);
+ mTaskOverlayFactory = TaskOverlayFactory.get(this);
sConnected = true;
@@ -239,7 +241,7 @@ public class TouchInteractionService extends Service {
mOverviewCommandHelper.overviewIntent,
mOverviewCommandHelper.getActivityControlHelper(), mMainThreadExecutor,
mBackgroundThreadChoreographer, downHitTarget, mOverviewCallbacks,
- tracker);
+ mTaskOverlayFactory, tracker);
}
}
diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
index 703ea2ea2..ff3137d44 100644
--- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -37,6 +37,7 @@ import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Build;
+import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.SystemClock;
@@ -109,19 +110,21 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
private static final int STATE_SCALED_CONTROLLER_APP = 1 << 6;
private static final int STATE_HANDLER_INVALIDATED = 1 << 7;
- private static final int STATE_GESTURE_STARTED = 1 << 8;
- private static final int STATE_GESTURE_CANCELLED = 1 << 9;
- private static final int STATE_GESTURE_COMPLETED = 1 << 10;
+ private static final int STATE_GESTURE_STARTED_QUICKSTEP = 1 << 8;
+ private static final int STATE_GESTURE_STARTED_QUICKSCRUB = 1 << 9;
+ private static final int STATE_GESTURE_CANCELLED = 1 << 10;
+ private static final int STATE_GESTURE_COMPLETED = 1 << 11;
// States for quick switch/scrub
- private static final int STATE_CURRENT_TASK_FINISHED = 1 << 11;
- private static final int STATE_QUICK_SCRUB_START = 1 << 12;
- private static final int STATE_QUICK_SCRUB_END = 1 << 13;
+ private static final int STATE_CURRENT_TASK_FINISHED = 1 << 12;
+ private static final int STATE_QUICK_SCRUB_START = 1 << 13;
+ private static final int STATE_QUICK_SCRUB_END = 1 << 14;
- private static final int STATE_CAPTURE_SCREENSHOT = 1 << 14;
- private static final int STATE_SCREENSHOT_CAPTURED = 1 << 15;
+ private static final int STATE_CAPTURE_SCREENSHOT = 1 << 15;
+ private static final int STATE_SCREENSHOT_CAPTURED = 1 << 16;
- private static final int STATE_RESUME_LAST_TASK = 1 << 16;
+ private static final int STATE_RESUME_LAST_TASK = 1 << 17;
+ private static final int STATE_ASSIST_DATA_RECEIVED = 1 << 18;
private static final int LAUNCHER_UI_STATES =
STATE_LAUNCHER_PRESENT | STATE_LAUNCHER_DRAWN | STATE_ACTIVITY_MULTIPLIER_COMPLETE
@@ -145,7 +148,8 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
"STATE_SCALED_CONTROLLER_RECENTS",
"STATE_SCALED_CONTROLLER_APP",
"STATE_HANDLER_INVALIDATED",
- "STATE_GESTURE_STARTED",
+ "STATE_GESTURE_STARTED_QUICKSTEP",
+ "STATE_GESTURE_STARTED_QUICKSCRUB",
"STATE_GESTURE_CANCELLED",
"STATE_GESTURE_COMPLETED",
"STATE_CURRENT_TASK_FINISHED",
@@ -154,6 +158,7 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
"STATE_CAPTURE_SCREENSHOT",
"STATE_SCREENSHOT_CAPTURED",
"STATE_RESUME_LAST_TASK",
+ "STATE_ASSIST_DATA_RECEIVED",
};
public static final long MAX_SWIPE_DURATION = 350;
@@ -227,6 +232,8 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
private float mLongSwipeDisplacement = 0;
private LongSwipeHelper mLongSwipeController;
+ private Bundle mAssistData;
+
WindowTransformSwipeHandler(int id, RunningTaskInfo runningTaskInfo, Context context,
long touchTimeMs, ActivityControlHelper<T> controller) {
this.id = id;
@@ -253,12 +260,19 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
}
};
- mStateCallback.addCallback(STATE_LAUNCHER_DRAWN | STATE_GESTURE_STARTED,
+ mStateCallback.addCallback(STATE_LAUNCHER_DRAWN | STATE_GESTURE_STARTED_QUICKSCRUB,
+ this::initializeLauncherAnimationController);
+ mStateCallback.addCallback(STATE_LAUNCHER_DRAWN | STATE_GESTURE_STARTED_QUICKSTEP,
this::initializeLauncherAnimationController);
+
mStateCallback.addCallback(STATE_LAUNCHER_PRESENT | STATE_LAUNCHER_DRAWN,
this::launcherFrameDrawn);
- mStateCallback.addCallback(STATE_LAUNCHER_PRESENT | STATE_GESTURE_STARTED,
+
+ mStateCallback.addCallback(STATE_LAUNCHER_PRESENT | STATE_GESTURE_STARTED_QUICKSTEP,
this::notifyGestureStartedAsync);
+ mStateCallback.addCallback(STATE_LAUNCHER_PRESENT | STATE_GESTURE_STARTED_QUICKSCRUB,
+ this::notifyGestureStartedAsync);
+
mStateCallback.addCallback(STATE_LAUNCHER_PRESENT | STATE_LAUNCHER_STARTED
| STATE_GESTURE_CANCELLED,
this::resetStateForAnimationCancel);
@@ -281,11 +295,15 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
this::finishCurrentTransitionToHome);
mStateCallback.addCallback(STATE_LAUNCHER_PRESENT | STATE_APP_CONTROLLER_RECEIVED
- | STATE_ACTIVITY_MULTIPLIER_COMPLETE
- | STATE_SCALED_CONTROLLER_RECENTS
- | STATE_CURRENT_TASK_FINISHED
- | STATE_GESTURE_COMPLETED,
+ | STATE_ACTIVITY_MULTIPLIER_COMPLETE | STATE_SCALED_CONTROLLER_RECENTS
+ | STATE_CURRENT_TASK_FINISHED | STATE_GESTURE_COMPLETED
+ | STATE_GESTURE_STARTED_QUICKSTEP,
this::setupLauncherUiAfterSwipeUpAnimation);
+ mStateCallback.addCallback(STATE_LAUNCHER_PRESENT | STATE_APP_CONTROLLER_RECEIVED
+ | STATE_ACTIVITY_MULTIPLIER_COMPLETE | STATE_SCALED_CONTROLLER_RECENTS
+ | STATE_CURRENT_TASK_FINISHED | STATE_GESTURE_COMPLETED
+ | STATE_GESTURE_STARTED_QUICKSTEP | STATE_ASSIST_DATA_RECEIVED,
+ this::preloadAssistData);
mStateCallback.addCallback(STATE_HANDLER_INVALIDATED, this::invalidateHandler);
mStateCallback.addCallback(STATE_LAUNCHER_PRESENT | STATE_HANDLER_INVALIDATED,
@@ -641,7 +659,8 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
public void onGestureStarted() {
notifyGestureStartedAsync();
- setStateOnUiThread(STATE_GESTURE_STARTED);
+ setStateOnUiThread(mInteractionType == INTERACTION_NORMAL
+ ? STATE_GESTURE_STARTED_QUICKSTEP : STATE_GESTURE_STARTED_QUICKSCRUB);
mGestureStarted = true;
mRecentsAnimationWrapper.hideCurrentInputMethod();
mRecentsAnimationWrapper.enableInputConsumer();
@@ -910,6 +929,9 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
return;
}
mQuickScrubController.onFinishedTransitionToQuickScrub();
+
+ mRecentsView.setRunningTaskIconScaledDown(false /* isScaledDown */, true /* animate */);
+ RecentsModel.getInstance(mContext).onOverviewShown(false, TAG);
}
public void onQuickScrubProgress(float progress) {
@@ -1036,4 +1058,13 @@ public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
mClipAnimationHelper.setTaskAlphaCallback(provider);
updateFinalShift();
}
+
+ public void onAssistDataReceived(Bundle assistData) {
+ mAssistData = assistData;
+ setStateOnUiThread(STATE_ASSIST_DATA_RECEIVED);
+ }
+
+ private void preloadAssistData() {
+ RecentsModel.getInstance(mContext).preloadAssistData(mRunningTaskId, mAssistData);
+ }
}