Merge "Debug MemoryTests activity count" into udc-dev
diff --git a/quickstep/res/layout-sw600dp/allset_navigation_and_hint.xml b/quickstep/res/layout-sw600dp/allset_navigation.xml
similarity index 71%
copy from quickstep/res/layout-sw600dp/allset_navigation_and_hint.xml
copy to quickstep/res/layout-sw600dp/allset_navigation.xml
index 44b3ecb..a47eef4 100644
--- a/quickstep/res/layout-sw600dp/allset_navigation_and_hint.xml
+++ b/quickstep/res/layout-sw600dp/allset_navigation.xml
@@ -25,19 +25,9 @@
android:background="?android:attr/selectableItemBackground"
android:minHeight="48dp"
android:text="@string/allset_navigation_settings"
- app:layout_constraintTop_toBottomOf="@id/subtitle"
- app:layout_constraintStart_toStartOf="parent" />
+ android:gravity="center_horizontal"
- <TextView
- android:id="@+id/hint"
- style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="24dp"
- android:text="@string/allset_hint"
- android:textSize="@dimen/allset_page_swipe_up_text_size"
- app:layout_constraintBottom_toBottomOf="parent"
- app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/subtitle"
app:layout_constraintStart_toStartOf="parent" />
</merge>
\ No newline at end of file
diff --git a/quickstep/res/layout/activity_allset.xml b/quickstep/res/layout/activity_allset.xml
index 7ea92b5..2c312a7 100644
--- a/quickstep/res/layout/activity_allset.xml
+++ b/quickstep/res/layout/activity_allset.xml
@@ -14,33 +14,43 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<FrameLayout
+<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/root_view"
- android:background="@color/all_set_page_background" >
+ android:fitsSystemWindows="false"
+ android:background="@color/all_set_page_background">
- <androidx.constraintlayout.widget.ConstraintLayout
+ <com.airbnb.lottie.LottieAnimationView
+ android:id="@+id/animated_background"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:id="@+id/content_view"
- android:fitsSystemWindows="false">
+ android:gravity="center"
+ android:scaleType="centerCrop"
+ app:lottie_autoPlay="true"
+ app:lottie_loop="true"
- <com.airbnb.lottie.LottieAnimationView
- android:id="@+id/animated_background"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="center"
- android:scaleType="centerCrop"
- app:lottie_autoPlay="true"
- app:lottie_loop="true" />
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"/>
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:fillViewport="true"
+
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintEnd_toEndOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/text_content_view"
android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
android:layout_marginStart="@dimen/allset_page_margin_horizontal"
android:layout_marginEnd="@dimen/allset_page_margin_horizontal"
android:layoutDirection="locale"
@@ -78,10 +88,24 @@
app:layout_constraintStart_toStartOf="parent"
android:gravity="start"/>
- <include layout="@layout/allset_navigation_and_hint"/>
+ <include layout="@layout/allset_navigation"/>
+
+ <TextView
+ android:id="@+id/hint"
+ style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="24dp"
+ android:text="@string/allset_hint"
+ android:textSize="@dimen/allset_page_swipe_up_text_size"
+ android:gravity="center_horizontal"
+
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
- </androidx.constraintlayout.widget.ConstraintLayout>
+ </ScrollView>
-</FrameLayout>
\ No newline at end of file
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/quickstep/res/layout-sw600dp/allset_navigation_and_hint.xml b/quickstep/res/layout/allset_navigation.xml
similarity index 76%
rename from quickstep/res/layout-sw600dp/allset_navigation_and_hint.xml
rename to quickstep/res/layout/allset_navigation.xml
index 44b3ecb..76b24af 100644
--- a/quickstep/res/layout-sw600dp/allset_navigation_and_hint.xml
+++ b/quickstep/res/layout/allset_navigation.xml
@@ -22,21 +22,15 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
+ android:layout_marginBottom="24dp"
android:background="?android:attr/selectableItemBackground"
android:minHeight="48dp"
android:text="@string/allset_navigation_settings"
- app:layout_constraintTop_toBottomOf="@id/subtitle"
- app:layout_constraintStart_toStartOf="parent" />
+ android:gravity="center_horizontal"
- <TextView
- android:id="@+id/hint"
- style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="24dp"
- android:text="@string/allset_hint"
- android:textSize="@dimen/allset_page_swipe_up_text_size"
- app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintVertical_bias="1.0"
+ app:layout_constraintTop_toBottomOf="@id/subtitle"
+ app:layout_constraintBottom_toTopOf="@id/hint"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
diff --git a/quickstep/res/layout/allset_navigation_and_hint.xml b/quickstep/res/layout/allset_navigation_and_hint.xml
deleted file mode 100644
index 4d5cf01..0000000
--- a/quickstep/res/layout/allset_navigation_and_hint.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2022 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<merge xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto">
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/navigation_settings_guideline_bottom"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.83" />
-
- <TextView
- android:id="@+id/navigation_settings"
- style="@style/TextAppearance.GestureTutorial.LinkText"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="?android:attr/selectableItemBackground"
- android:minHeight="48dp"
- android:text="@string/allset_navigation_settings"
- app:layout_constraintBottom_toBottomOf="@id/navigation_settings_guideline_bottom"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent" />
-
- <androidx.constraintlayout.widget.Guideline
- android:id="@+id/hint_guideline_bottom"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal"
- app:layout_constraintGuide_percent="0.94" />
-
- <TextView
- android:id="@+id/hint"
- style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/allset_hint"
- android:textSize="@dimen/allset_page_swipe_up_text_size"
- app:layout_constraintBottom_toBottomOf="@id/hint_guideline_bottom"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent" />
-
-</merge>
\ No newline at end of file
diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
index 3a6566a..63f1336 100644
--- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
+++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java
@@ -830,7 +830,8 @@
* @return Whether we can create the launcher controller or update its progress.
*/
private boolean canCreateNewOrUpdateExistingLauncherTransitionController() {
- return mGestureState.getEndTarget() != HOME && !mHasEndedLauncherTransition;
+ return mGestureState.getEndTarget() != HOME
+ && !mHasEndedLauncherTransition && mActivity != null;
}
@Override
diff --git a/quickstep/src/com/android/quickstep/RemoteTargetGluer.java b/quickstep/src/com/android/quickstep/RemoteTargetGluer.java
index 84b90b9..27fb476 100644
--- a/quickstep/src/com/android/quickstep/RemoteTargetGluer.java
+++ b/quickstep/src/com/android/quickstep/RemoteTargetGluer.java
@@ -16,6 +16,7 @@
package com.android.quickstep;
+import android.app.WindowConfiguration;
import android.content.Context;
import android.graphics.Rect;
import android.view.RemoteAnimationTarget;
@@ -123,7 +124,14 @@
mRemoteTargetHandles = newHandles;
}
+ boolean containsSplitTargets = Arrays.stream(targets.apps)
+ .anyMatch(remoteAnimationTarget ->
+ remoteAnimationTarget.windowConfiguration.getWindowingMode()
+ == WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW);
+
if (mRemoteTargetHandles.length == 1) {
+ // Single fullscreen app
+
// If we're not in split screen, the splitIds count doesn't really matter since we
// should always hit this case.
mRemoteTargetHandles[0].mTransformParams.setTargetSet(targets);
@@ -131,13 +139,29 @@
// Unclear why/when target.apps length == 0, but it sure does happen :(
mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(targets.apps[0], null);
}
+ } else if (!containsSplitTargets) {
+ // Single App + Assistant
+ for (int i = 0; i < mRemoteTargetHandles.length; i++) {
+ mRemoteTargetHandles[i].mTransformParams.setTargetSet(targets);
+ mRemoteTargetHandles[i].mTaskViewSimulator.setPreview(targets.apps[i], null);
+ }
} else {
- RemoteAnimationTarget topLeftTarget = targets.apps[0];
+ // Split apps (+ maybe assistant)
+ RemoteAnimationTarget topLeftTarget = Arrays.stream(targets.apps)
+ .filter(remoteAnimationTarget ->
+ remoteAnimationTarget.windowConfiguration.getWindowingMode()
+ == WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW)
+ .findFirst().get();
// Fetch the adjacent target for split screen.
RemoteAnimationTarget bottomRightTarget = null;
- for (int i = 1; i < targets.apps.length; i++) {
+ for (int i = 0; i < targets.apps.length; i++) {
final RemoteAnimationTarget target = targets.apps[i];
+ if (target.windowConfiguration.getWindowingMode() !=
+ WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW ||
+ target == topLeftTarget) {
+ continue;
+ }
Rect topLeftBounds = getStartBounds(topLeftTarget);
Rect bounds = getStartBounds(target);
if (topLeftBounds.left > bounds.right || topLeftBounds.top > bounds.bottom) {
diff --git a/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java b/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java
index 1868463..2eaff46 100644
--- a/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java
+++ b/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java
@@ -95,17 +95,13 @@
private static final float ANIMATION_PAUSE_ALPHA_THRESHOLD = 0.1f;
- private final Rect mTempSettingsBounds = new Rect();
- private final Rect mTempInclusionBounds = new Rect();
- private final Rect mTempExclusionBounds = new Rect();
-
private TISBindHelper mTISBindHelper;
private TISBinder mBinder;
@Nullable private TaskbarManager mTaskbarManager = null;
private final AnimatedFloat mSwipeProgress = new AnimatedFloat(this::onSwipeProgressUpdate);
private BgDrawable mBackground;
- private View mContentView;
+ private View mRootView;
private float mSwipeUpShift;
@Nullable private Vibrator mVibrator;
@@ -118,7 +114,8 @@
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_allset);
- findViewById(R.id.root_view).setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+ mRootView = findViewById(R.id.root_view);
+ mRootView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
@@ -133,8 +130,7 @@
((ImageView) findViewById(R.id.icon)).getDrawable().mutate().setTint(accentColor);
mBackground = new BgDrawable(this);
- findViewById(R.id.root_view).setBackground(mBackground);
- mContentView = findViewById(R.id.content_view);
+ mRootView.setBackground(mBackground);
mSwipeUpShift = resources.getDimension(R.dimen.allset_swipe_up_shift);
TextView subtitle = findViewById(R.id.subtitle);
@@ -162,34 +158,6 @@
}
hint.setAccessibilityDelegate(new SkipButtonAccessibilityDelegate());
- View textContent = findViewById(R.id.text_content_view);
- textContent.addOnLayoutChangeListener(
- (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
- mTempSettingsBounds.set(
- settings.getLeft(),
- settings.getTop(),
- settings.getRight(),
- settings.getBottom());
- mTempInclusionBounds.set(
- 0,
- // Do not allow overlapping with the subtitle text
- subtitle.getBottom(),
- textContent.getWidth(),
- textContent.getHeight());
- mTempExclusionBounds.set(
- hint.getLeft(),
- hint.getTop(),
- hint.getRight(),
- hint.getBottom());
-
- Utilities.translateOverlappingView(
- settings,
- mTempSettingsBounds,
- mTempInclusionBounds,
- mTempExclusionBounds,
- Utilities.TRANSLATE_UP);
- });
-
mTISBindHelper = new TISBindHelper(this, this::onTISConnected);
mVibrator = getSystemService(Vibrator.class);
@@ -357,8 +325,8 @@
private void onSwipeProgressUpdate() {
mBackground.setProgress(mSwipeProgress.value);
float alpha = getContentViewAlphaForSwipeProgress();
- mContentView.setAlpha(alpha);
- mContentView.setTranslationY((alpha - 1) * mSwipeUpShift);
+ mRootView.setAlpha(alpha);
+ mRootView.setTranslationY((alpha - 1) * mSwipeUpShift);
if (mLauncherStartAnim == null && mTaskbarManager != null) {
mLauncherStartAnim = mTaskbarManager.createLauncherStartFromSuwAnim(MAX_SWIPE_DURATION);
diff --git a/quickstep/src/com/android/quickstep/util/QuickstepOnboardingPrefs.java b/quickstep/src/com/android/quickstep/util/QuickstepOnboardingPrefs.java
index cf07e6e..ef7d7a9 100644
--- a/quickstep/src/com/android/quickstep/util/QuickstepOnboardingPrefs.java
+++ b/quickstep/src/com/android/quickstep/util/QuickstepOnboardingPrefs.java
@@ -78,7 +78,8 @@
public void onStateTransitionComplete(LauncherState finalState) {
HotseatPredictionController client = mLauncher.getHotseatPredictionController();
if (mFromAllApps && finalState == NORMAL && client.hasPredictions()) {
- if (incrementEventCount(HOTSEAT_DISCOVERY_TIP_COUNT)) {
+ if (!mLauncher.getDeviceProfile().isTablet
+ && incrementEventCount(HOTSEAT_DISCOVERY_TIP_COUNT)) {
client.showEdu();
stateManager.removeStateListener(this);
}
diff --git a/quickstep/src/com/android/quickstep/util/SplitSelectDataHolder.kt b/quickstep/src/com/android/quickstep/util/SplitSelectDataHolder.kt
index 0631537..e073264 100644
--- a/quickstep/src/com/android/quickstep/util/SplitSelectDataHolder.kt
+++ b/quickstep/src/com/android/quickstep/util/SplitSelectDataHolder.kt
@@ -320,7 +320,7 @@
return SPLIT_SINGLE_SHORTCUT_FULLSCREEN
}
- if (initialIntent != null) {
+ if (initialPendingIntent != null) {
return SPLIT_SINGLE_INTENT_FULLSCREEN
}
throw IllegalStateException("Unidentified fullscreen launch type")
diff --git a/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java b/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java
index f8893bd..303a528 100644
--- a/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java
+++ b/quickstep/src/com/android/quickstep/util/TaskViewSimulator.java
@@ -411,7 +411,7 @@
// transitions, the animation leashes are reparented to an animation container so we
// can bump layers as needed.
builder.setLayer(mDrawsBelowRecents
- ? Integer.MIN_VALUE + 1
+ ? Integer.MIN_VALUE + app.prefixOrderIndex
: ENABLE_SHELL_TRANSITIONS ? Integer.MAX_VALUE : 0);
}
}
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index f740d9c..6d78364 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -4099,6 +4099,15 @@
}
alpha = Utilities.boundToRange(alpha, 0, 1);
mContentAlpha = alpha;
+
+ runActionOnRemoteHandles(remoteTargetHandle -> {
+ TransformParams params = remoteTargetHandle.getTransformParams();
+ params.setTargetAlpha(mContentAlpha);
+ if (params.getTargetSet() != null) {
+ remoteTargetHandle.getTaskViewSimulator().apply(params);
+ }
+ });
+
int runningTaskId = getTaskIdsForRunningTaskView()[0];
for (int i = getTaskViewCount() - 1; i >= 0; i--) {
TaskView child = requireTaskViewAt(i);
diff --git a/src/com/android/launcher3/folder/LauncherDelegate.java b/src/com/android/launcher3/folder/LauncherDelegate.java
index 3e55425..f15dc83 100644
--- a/src/com/android/launcher3/folder/LauncherDelegate.java
+++ b/src/com/android/launcher3/folder/LauncherDelegate.java
@@ -94,6 +94,9 @@
// folder
CellLayout cellLayout = mLauncher.getCellLayout(info.container,
info.screenId);
+ if (cellLayout == null) {
+ return;
+ }
finalItem = info.contents.remove(0);
newIcon = mLauncher.createShortcut(cellLayout, finalItem);
mLauncher.getModelWriter().addOrMoveItemInDatabase(finalItem,
diff --git a/src/com/android/launcher3/pm/UserCache.java b/src/com/android/launcher3/pm/UserCache.java
index 5ebcf42..24a9609 100644
--- a/src/com/android/launcher3/pm/UserCache.java
+++ b/src/com/android/launcher3/pm/UserCache.java
@@ -17,6 +17,7 @@
package com.android.launcher3.pm;
import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING;
+import static com.android.launcher3.testing.shared.TestProtocol.sDebugTracing;
import static com.android.launcher3.testing.shared.TestProtocol.testLogD;
import android.content.Context;
@@ -140,8 +141,18 @@
*/
public List<UserHandle> getUserProfiles() {
StringBuilder usersToReturn = new StringBuilder();
+ List<UserHandle> users;
+ if (sDebugTracing) {
+ users = mUserManager.getUserProfiles();
+ for (UserHandle u : users) {
+ usersToReturn.append(u).append(" && ");
+ }
+ testLogD(WORK_TAB_MISSING, "users from userManager: " + usersToReturn);
+ }
+
synchronized (this) {
if (mUsers != null) {
+ usersToReturn = new StringBuilder();
for (UserHandle u : mUserToSerialMap.keySet()) {
usersToReturn.append(u).append(" && ");
}
@@ -152,11 +163,7 @@
}
}
- List<UserHandle> users = mUserManager.getUserProfiles();
- for (UserHandle u : users) {
- usersToReturn.append(u).append(" && ");
- }
- testLogD(WORK_TAB_MISSING, "users from userManager: " + usersToReturn);
+ users = mUserManager.getUserProfiles();
return users == null ? Collections.emptyList() : users;
}
}