Snap for 10412120 from 865b576cf4 to udc-qpr1-release
Change-Id: I41f31b3ae3b65833b1771a85a4557895b295db55
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -21,5 +21,4 @@
|
||||
android:layout_height="match_parent"
|
||||
android:theme="@style/HomeScreenElementTheme"
|
||||
android:importantForAccessibility="no"
|
||||
android:preferKeepClear="true"
|
||||
launcher:containerType="hotseat" />
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user