Snap for 10412120 from 865b576cf4 to udc-qpr1-release

Change-Id: I41f31b3ae3b65833b1771a85a4557895b295db55
This commit is contained in:
Android Build Coastguard Worker
2023-06-29 23:19:43 +00:00
11 changed files with 20 additions and 87 deletions
@@ -18,6 +18,7 @@ package com.android.launcher3;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
import static android.provider.Settings.Secure.LAUNCHER_TASKBAR_EDUCATION_SHOWING;
import static android.view.RemoteAnimationTarget.MODE_CLOSING;
import static android.view.RemoteAnimationTarget.MODE_OPENING;
@@ -1210,14 +1211,15 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
return false;
}
private boolean hasMultipleTargetsWithMode(RemoteAnimationTarget[] targets, int mode) {
private boolean shouldPlayFallbackClosingAnimation(RemoteAnimationTarget[] targets) {
int numTargets = 0;
for (RemoteAnimationTarget target : targets) {
if (target.mode == mode) {
if (target.mode == MODE_CLOSING) {
numTargets++;
}
if (numTargets > 1) {
return true;
if (numTargets > 1 || target.windowConfiguration.getWindowingMode()
== WINDOWING_MODE_MULTI_WINDOW) {
return true;
}
}
}
return false;
@@ -1604,7 +1606,7 @@ public class QuickstepTransitionManager implements OnDeviceProfileChangeListener
boolean playFallBackAnimation = (launcherView == null
&& launcherIsForceInvisibleOrOpening)
|| mLauncher.getWorkspace().isOverlayShown()
|| hasMultipleTargetsWithMode(appTargets, MODE_CLOSING);
|| shouldPlayFallbackClosingAnimation(appTargets);
boolean playWorkspaceReveal = true;
boolean skipAllAppsScale = false;
@@ -239,7 +239,7 @@ public class RecentsAnimationDeviceState implements DisplayInfoChangeListener {
public void onDisplayInfoChanged(Context context, Info info, int flags) {
if ((flags & (CHANGE_ROTATION | CHANGE_NAVIGATION_MODE)) != 0) {
mMode = info.navigationMode;
mNavBarPosition = new NavBarPosition(mContext, mMode, info);
mNavBarPosition = new NavBarPosition(mMode, info);
if (mMode == NO_BUTTON) {
mExclusionListener.register();
@@ -42,7 +42,7 @@ public class FallbackNavBarTouchController implements TouchController,
mActivity = activity;
NavigationMode sysUINavigationMode = DisplayController.getNavigationMode(mActivity);
if (sysUINavigationMode == NavigationMode.NO_BUTTON) {
NavBarPosition navBarPosition = new NavBarPosition(mActivity, sysUINavigationMode,
NavBarPosition navBarPosition = new NavBarPosition(sysUINavigationMode,
DisplayController.INSTANCE.get(mActivity).getInfo());
mTriggerSwipeUpTracker = new TriggerSwipeUpTouchTracker(mActivity,
true /* disableHorizontalSwipe */, navBarPosition,
@@ -60,12 +60,11 @@ public class NavBarGestureHandler implements OnTouchListener,
NavBarGestureHandler(Context context) {
mContext = context;
DisplayController.Info displayInfo = DisplayController.INSTANCE.get(mContext).getInfo();
final int displayRotation = displayInfo.rotation;
Point currentSize = displayInfo.currentSize;
mDisplaySize.set(currentSize.x, currentSize.y);
mSwipeUpTouchTracker =
new TriggerSwipeUpTouchTracker(context, true /*disableHorizontalSwipe*/,
new NavBarPosition(mContext, NavigationMode.NO_BUTTON, displayRotation),
new NavBarPosition(NavigationMode.NO_BUTTON, displayInfo),
null /*onInterceptTouch*/, this);
mMotionPauseDetector = new MotionPauseDetector(context);
@@ -16,9 +16,7 @@
package com.android.quickstep.util;
import static com.android.launcher3.util.NavigationMode.NO_BUTTON;
import static com.android.systemui.shared.recents.utilities.Utilities.isLargeScreen;
import android.content.Context;
import android.view.Surface;
import com.android.launcher3.util.DisplayController.Info;
@@ -29,26 +27,22 @@ import com.android.launcher3.util.NavigationMode;
*/
public class NavBarPosition {
private final boolean mIsLargeScreen;
private final boolean mIsTablet;
private final NavigationMode mMode;
private final int mDisplayRotation;
public NavBarPosition(Context context, NavigationMode mode, Info info) {
this(context, mode, info.rotation);
}
public NavBarPosition(Context context, NavigationMode mode, int displayRotation) {
mIsLargeScreen = isLargeScreen(context);
public NavBarPosition(NavigationMode mode, Info info) {
mIsTablet = info.isTablet(info.realBounds);
mMode = mode;
mDisplayRotation = displayRotation;
mDisplayRotation = info.rotation;
}
public boolean isRightEdge() {
return mMode != NO_BUTTON && mDisplayRotation == Surface.ROTATION_90 && !mIsLargeScreen;
return mMode != NO_BUTTON && mDisplayRotation == Surface.ROTATION_90 && !mIsTablet;
}
public boolean isLeftEdge() {
return mMode != NO_BUTTON && mDisplayRotation == Surface.ROTATION_270 && !mIsLargeScreen;
return mMode != NO_BUTTON && mDisplayRotation == Surface.ROTATION_270 && !mIsTablet;
}
public float getRotation() {
@@ -62,7 +62,6 @@ import com.android.launcher3.util.rule.FailureWatcher;
import com.android.launcher3.util.rule.SamplerRule;
import com.android.launcher3.util.rule.ScreenRecordRule;
import com.android.launcher3.util.rule.TestStabilityRule;
import com.android.launcher3.util.rule.ViewCaptureAnalysisRule;
import com.android.launcher3.util.rule.ViewCaptureRule;
import com.android.quickstep.views.RecentsView;
@@ -123,8 +122,7 @@ public class FallbackRecentsTest {
.outerRule(new SamplerRule())
.around(new NavigationModeSwitchRule(mLauncher))
.around(new FailureWatcher(mLauncher, viewCaptureRule::getViewCaptureData))
.around(viewCaptureRule)
.around(new ViewCaptureAnalysisRule(viewCaptureRule.getViewCapture()));
.around(viewCaptureRule);
mOtherLauncherActivity = context.getPackageManager().queryIntentActivities(
getHomeIntentInPackage(context),
-1
View File
@@ -21,5 +21,4 @@
android:layout_height="match_parent"
android:theme="@style/HomeScreenElementTheme"
android:importantForAccessibility="no"
android:preferKeepClear="true"
launcher:containerType="hotseat" />
-1
View File
@@ -58,7 +58,6 @@ filegroup {
"src/com/android/launcher3/util/rule/SimpleActivityRule.java",
"src/com/android/launcher3/util/rule/TestStabilityRule.java",
"src/com/android/launcher3/util/rule/TISBindRule.java",
"src/com/android/launcher3/util/rule/ViewCaptureAnalysisRule.java",
"src/com/android/launcher3/testcomponent/BaseTestingActivity.java",
"src/com/android/launcher3/testcomponent/OtherBaseTestingActivity.java",
"src/com/android/launcher3/testcomponent/CustomShortcutConfigActivity.java",
@@ -70,7 +70,6 @@ import com.android.launcher3.util.rule.SamplerRule;
import com.android.launcher3.util.rule.ScreenRecordRule;
import com.android.launcher3.util.rule.ShellCommandRule;
import com.android.launcher3.util.rule.TestStabilityRule;
import com.android.launcher3.util.rule.ViewCaptureAnalysisRule;
import com.android.launcher3.util.rule.ViewCaptureRule;
import org.junit.After;
@@ -209,8 +208,7 @@ public abstract class AbstractLauncherUiTest {
final RuleChain inner = RuleChain
.outerRule(new PortraitLandscapeRunner(this))
.around(new FailureWatcher(mLauncher, viewCaptureRule::getViewCaptureData))
.around(viewCaptureRule)
.around(new ViewCaptureAnalysisRule(viewCaptureRule.getViewCapture()));
.around(viewCaptureRule);
return TestHelpers.isInLauncherProcess()
? RuleChain.outerRule(ShellCommandRule.setDefaultLauncher()).around(inner)
@@ -1,56 +0,0 @@
/*
* Copyright (C) 2023 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.
*/
package com.android.launcher3.util.rule;
import androidx.annotation.NonNull;
import androidx.test.InstrumentationRegistry;
import com.android.app.viewcapture.ViewCapture;
import com.android.app.viewcapture.data.ExportedData;
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
import java.util.concurrent.ExecutionException;
/**
* After the test succeeds, the rule looks for anomalies in the data accumulated by ViewCapture
* that's passed as a parameter. If anomalies are detected, throws an exception and fails the test.
*/
public class ViewCaptureAnalysisRule extends TestWatcher {
@NonNull
private final ViewCapture mViewCapture;
public ViewCaptureAnalysisRule(@NonNull ViewCapture viewCapture) {
mViewCapture = viewCapture;
}
@Override
protected void succeeded(Description description) {
super.succeeded(description);
try {
analyzeViewCaptureData(mViewCapture.getExportedData(
InstrumentationRegistry.getTargetContext()));
} catch (InterruptedException e) {
throw new RuntimeException(e);
} catch (ExecutionException e) {
throw new RuntimeException(e);
}
}
private static void analyzeViewCaptureData(ExportedData viewCaptureData) {
}
}
@@ -36,7 +36,7 @@ import org.junit.runners.model.Statement
* This rule will not work in OOP tests that don't have access to the activity under test.
*/
class ViewCaptureRule(var alreadyOpenActivitySupplier: Supplier<Activity?>) : TestRule {
val viewCapture = SimpleViewCapture("test-view-capture")
private val viewCapture = SimpleViewCapture("test-view-capture")
var viewCaptureData: ExportedData? = null
private set