Merge "Revert "Revert "Add TaskbarModeSwitchRule to test both transient/persistent taskbar.""" into tm-qpr-dev

This commit is contained in:
TreeHugger Robot
2022-11-15 22:31:55 +00:00
committed by Android (Google) Code Review
12 changed files with 269 additions and 9 deletions

View File

@@ -23,6 +23,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL;
import static com.android.launcher3.AbstractFloatingView.TYPE_ALL;
import static com.android.launcher3.AbstractFloatingView.TYPE_REBIND_SAFE;
import static com.android.launcher3.Utilities.IS_RUNNING_IN_TEST_HARNESS;
import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_FOLDER_OPEN;
import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_DRAGGING;
import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_FULLSCREEN;
@@ -308,7 +309,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
int windowFlags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_SLIPPERY
| WindowManager.LayoutParams.FLAG_SPLIT_TOUCH;
if (DisplayController.isTransientTaskbar(this)) {
if (DisplayController.isTransientTaskbar(this)
&& !IS_RUNNING_IN_TEST_HARNESS) {
windowFlags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
}
@@ -896,13 +898,26 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
mControllers.taskbarStashController.enableManualStashingDuringTests(enableManualStashing);
}
/**
* Enables the auto timeout for taskbar stashing. This method should only be used for taskbar
* testing.
*/
@VisibleForTesting
public void enableBlockingTimeoutDuringTests(boolean enableBlockingTimeout) {
mControllers.taskbarStashController.enableBlockingTimeoutDuringTests(enableBlockingTimeout);
}
/**
* Unstashes the Taskbar if it is stashed. This method should only be used to unstash the
* taskbar at the end of a test.
*/
@VisibleForTesting
public void unstashTaskbarIfStashed() {
mControllers.taskbarStashController.onLongPressToUnstashTaskbar();
if (DisplayController.isTransientTaskbar(this)) {
mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(false);
} else {
mControllers.taskbarStashController.onLongPressToUnstashTaskbar();
}
}
protected boolean isUserSetupComplete() {

View File

@@ -37,6 +37,7 @@ import android.view.View;
import android.view.ViewConfiguration;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import com.android.internal.jank.InteractionJankMonitor;
import com.android.launcher3.Alarm;
@@ -169,6 +170,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
private boolean mEnableManualStashingDuringTests = false;
private final Alarm mTimeoutAlarm = new Alarm();
private boolean mEnableBlockingTimeoutDuringTests = false;
// Evaluate whether the handle should be stashed
private final StatePropertyHolder mStatePropertyHolder = new StatePropertyHolder(
@@ -267,10 +269,20 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
* Enables support for manual stashing. This should only be used to add this functionality
* to Launcher specific tests.
*/
@VisibleForTesting
public void enableManualStashingDuringTests(boolean enableManualStashing) {
mEnableManualStashingDuringTests = enableManualStashing;
}
/**
* Enables the auto timeout for taskbar stashing. This method should only be used for taskbar
* testing.
*/
@VisibleForTesting
public void enableBlockingTimeoutDuringTests(boolean enableBlockingTimeout) {
mEnableBlockingTimeoutDuringTests = enableBlockingTimeout;
}
/**
* Sets the flag indicating setup UI is visible
*/
@@ -846,12 +858,12 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
* Attempts to start timer to auto hide the taskbar based on time.
*/
public void tryStartTaskbarTimeout() {
if (!DisplayController.isTransientTaskbar(mActivity)) {
return;
}
if (mIsStashed) {
if (!DisplayController.isTransientTaskbar(mActivity)
|| mIsStashed
|| mEnableBlockingTimeoutDuringTests) {
return;
}
cancelTimeoutIfExists();
mTimeoutAlarm.setOnAlarmListener(this::onTaskbarTimeout);

View File

@@ -11,9 +11,11 @@ import android.os.Bundle;
import androidx.annotation.Nullable;
import com.android.launcher3.R;
import com.android.launcher3.taskbar.TaskbarActivityContext;
import com.android.launcher3.testing.TestInformationHandler;
import com.android.launcher3.testing.shared.TestProtocol;
import com.android.launcher3.touch.PagedOrientationHandler;
import com.android.launcher3.util.DisplayController;
import com.android.quickstep.util.LayoutUtils;
import com.android.quickstep.util.TISBindHelper;
@@ -120,6 +122,30 @@ public class QuickstepTestInformationHandler extends TestInformationHandler {
.getCurrentActivityContext()
.getTaskbarAllAppsTopPadding());
}
case TestProtocol.REQUEST_ENABLE_BLOCK_TIMEOUT:
runOnTISBinder(tisBinder -> {
enableBlockingTimeout(tisBinder, true);
});
return response;
case TestProtocol.REQUEST_DISABLE_BLOCK_TIMEOUT:
runOnTISBinder(tisBinder -> {
enableBlockingTimeout(tisBinder, false);
});
return response;
case TestProtocol.REQUEST_ENABLE_TRANSIENT_TASKBAR:
runOnTISBinder(tisBinder -> {
enableTransientTaskbar(tisBinder, true);
});
return response;
case TestProtocol.REQUEST_DISABLE_TRANSIENT_TASKBAR:
runOnTISBinder(tisBinder -> {
enableTransientTaskbar(tisBinder, false);
});
return response;
}
return super.call(method, arg, extras);
@@ -149,6 +175,20 @@ public class QuickstepTestInformationHandler extends TestInformationHandler {
enable);
}
private void enableBlockingTimeout(
TouchInteractionService.TISBinder tisBinder, boolean enable) {
// Allow null-pointer to catch illegal states.
tisBinder.getTaskbarManager().getCurrentActivityContext().enableBlockingTimeoutDuringTests(
enable);
}
private void enableTransientTaskbar(
TouchInteractionService.TISBinder tisBinder, boolean enable) {
// Allow null-pointer to catch illegal states.
TaskbarActivityContext context = tisBinder.getTaskbarManager().getCurrentActivityContext();
DisplayController.INSTANCE.get(context).enableTransientTaskbarForTests(enable);
}
/**
* Runs the given command on the UI thread, after ensuring we are connected to
* TouchInteractionService.