mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-03-03 01:16:49 +00:00
Merge "Revert "Revert "Add TaskbarModeSwitchRule to test both transient/persistent taskbar.""" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
87ccecb6fc
@@ -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() {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user