Snap for 9018797 from e3948da48d to tm-qpr1-release
Change-Id: Id72f55884993bb414ab8857e32e44e12f8623e73
This commit is contained in:
+32
-26
@@ -25,12 +25,14 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.launcher3.Launcher;
|
||||
import com.android.launcher3.R;
|
||||
import com.android.launcher3.taskbar.LauncherTaskbarUIController;
|
||||
import com.android.launcher3.testing.DebugTestInformationHandler;
|
||||
import com.android.launcher3.testing.shared.TestProtocol;
|
||||
import com.android.launcher3.uioverrides.QuickstepLauncher;
|
||||
import com.android.quickstep.TouchInteractionService.TISBinder;
|
||||
import com.android.quickstep.util.TISBindHelper;
|
||||
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
/**
|
||||
* Class to handle requests from tests, including debug ones, to Quickstep Launcher builds.
|
||||
@@ -49,29 +51,26 @@ public abstract class DebugQuickstepTestInformationHandler extends QuickstepTest
|
||||
Bundle response = new Bundle();
|
||||
switch (method) {
|
||||
case TestProtocol.REQUEST_ENABLE_MANUAL_TASKBAR_STASHING:
|
||||
runOnUIThread(l -> {
|
||||
enableManualTaskbarStashing(l, true);
|
||||
runOnTISBinder(tisBinder -> {
|
||||
enableManualTaskbarStashing(tisBinder, true);
|
||||
});
|
||||
return response;
|
||||
|
||||
case TestProtocol.REQUEST_DISABLE_MANUAL_TASKBAR_STASHING:
|
||||
runOnUIThread(l -> {
|
||||
enableManualTaskbarStashing(l, false);
|
||||
runOnTISBinder(tisBinder -> {
|
||||
enableManualTaskbarStashing(tisBinder, false);
|
||||
});
|
||||
return response;
|
||||
|
||||
case TestProtocol.REQUEST_UNSTASH_TASKBAR_IF_STASHED:
|
||||
runOnUIThread(l -> {
|
||||
enableManualTaskbarStashing(l, true);
|
||||
|
||||
QuickstepLauncher quickstepLauncher = (QuickstepLauncher) l;
|
||||
LauncherTaskbarUIController taskbarUIController =
|
||||
quickstepLauncher.getTaskbarUIController();
|
||||
runOnTISBinder(tisBinder -> {
|
||||
enableManualTaskbarStashing(tisBinder, true);
|
||||
|
||||
// Allow null-pointer to catch illegal states.
|
||||
taskbarUIController.unstashTaskbarIfStashed();
|
||||
tisBinder.getTaskbarManager().getCurrentActivityContext()
|
||||
.unstashTaskbarIfStashed();
|
||||
|
||||
enableManualTaskbarStashing(l, false);
|
||||
enableManualTaskbarStashing(tisBinder, false);
|
||||
});
|
||||
return response;
|
||||
|
||||
@@ -82,6 +81,11 @@ public abstract class DebugQuickstepTestInformationHandler extends QuickstepTest
|
||||
return response;
|
||||
}
|
||||
|
||||
case TestProtocol.REQUEST_RECREATE_TASKBAR:
|
||||
// Allow null-pointer to catch illegal states.
|
||||
runOnTISBinder(tisBinder -> tisBinder.getTaskbarManager().recreateTaskbar());
|
||||
return response;
|
||||
|
||||
default:
|
||||
response = super.call(method, arg, extras);
|
||||
if (response != null) return response;
|
||||
@@ -89,24 +93,26 @@ public abstract class DebugQuickstepTestInformationHandler extends QuickstepTest
|
||||
}
|
||||
}
|
||||
|
||||
private void enableManualTaskbarStashing(Launcher launcher, boolean enable) {
|
||||
QuickstepLauncher quickstepLauncher = (QuickstepLauncher) launcher;
|
||||
LauncherTaskbarUIController taskbarUIController =
|
||||
quickstepLauncher.getTaskbarUIController();
|
||||
|
||||
private void enableManualTaskbarStashing(TISBinder tisBinder, boolean enable) {
|
||||
// Allow null-pointer to catch illegal states.
|
||||
taskbarUIController.enableManualStashingForTests(enable);
|
||||
tisBinder.getTaskbarManager().getCurrentActivityContext().enableManualStashingForTests(
|
||||
enable);
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs the given command on the UI thread.
|
||||
* Runs the given command on the UI thread, after ensuring we are connected to
|
||||
* TouchInteractionService.
|
||||
*/
|
||||
private static void runOnUIThread(UIThreadCommand command) {
|
||||
private void runOnTISBinder(Consumer<TISBinder> connectionCallback) {
|
||||
try {
|
||||
MAIN_EXECUTOR.submit(() -> {
|
||||
command.execute(Launcher.ACTIVITY_TRACKER.getCreatedActivity());
|
||||
return null;
|
||||
}).get();
|
||||
CountDownLatch countDownLatch = new CountDownLatch(1);
|
||||
TISBindHelper helper = MAIN_EXECUTOR.submit(() ->
|
||||
new TISBindHelper(mContext, tisBinder -> {
|
||||
connectionCallback.accept(tisBinder);
|
||||
countDownLatch.countDown();
|
||||
})).get();
|
||||
countDownLatch.await();
|
||||
MAIN_EXECUTOR.submit(helper::onDestroy);
|
||||
} catch (ExecutionException | InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@ public class DepthController extends BaseDepthController implements StateHandler
|
||||
|
||||
@Override
|
||||
public void setState(LauncherState toState) {
|
||||
if (mSurface == null || mIgnoreStateChangesDuringMultiWindowAnimation) {
|
||||
if (mIgnoreStateChangesDuringMultiWindowAnimation) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -43,8 +43,8 @@ public class DesktopTaskbarUIController extends TaskbarUIController {
|
||||
mLauncher.getHotseat().setIconsAlpha(1f);
|
||||
}
|
||||
|
||||
@Override
|
||||
/** Disable taskbar stashing in desktop environment. */
|
||||
@Override
|
||||
public boolean supportsVisualStashing() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -30,7 +30,6 @@ import android.view.WindowManagerGlobal;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.LauncherState;
|
||||
@@ -123,24 +122,6 @@ public class LauncherTaskbarUIController extends TaskbarUIController {
|
||||
shouldDelayLauncherStateAnim);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables manual taskbar stashing. This method should only be used for tests that need to
|
||||
* stash/unstash the taskbar.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
public void enableManualStashingForTests(boolean enableManualStashing) {
|
||||
mControllers.taskbarStashController.enableManualStashingForTests(enableManualStashing);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the Launcher resume animator to the given animator set.
|
||||
*
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.android.launcher3.taskbar;
|
||||
|
||||
import static android.view.View.AccessibilityDelegate;
|
||||
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
|
||||
import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X;
|
||||
@@ -582,6 +583,26 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT
|
||||
return mHomeButtonAlpha;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the AccessibilityDelegate for the home button.
|
||||
*/
|
||||
public void setHomeButtonAccessibilityDelegate(AccessibilityDelegate accessibilityDelegate) {
|
||||
if (mHomeButton == null) {
|
||||
return;
|
||||
}
|
||||
mHomeButton.setAccessibilityDelegate(accessibilityDelegate);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the AccessibilityDelegate for the back button.
|
||||
*/
|
||||
public void setBackButtonAccessibilityDelegate(AccessibilityDelegate accessibilityDelegate) {
|
||||
if (mBackButton == null) {
|
||||
return;
|
||||
}
|
||||
mBackButton.setAccessibilityDelegate(accessibilityDelegate);
|
||||
}
|
||||
|
||||
/** Use to set the translationY for the all nav+contextual buttons */
|
||||
public AnimatedFloat getTaskbarNavButtonTranslationY() {
|
||||
return mTaskbarNavButtonTranslationY;
|
||||
|
||||
@@ -773,6 +773,24 @@ public class TaskbarActivityContext extends BaseTaskbarContext {
|
||||
mControllers.taskbarStashController.startUnstashHint(animateForward);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables manual taskbar stashing. This method should only be used for tests that need to
|
||||
* stash/unstash the taskbar.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
public void enableManualStashingForTests(boolean enableManualStashing) {
|
||||
mControllers.taskbarStashController.enableManualStashingForTests(enableManualStashing);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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();
|
||||
}
|
||||
|
||||
protected boolean isUserSetupComplete() {
|
||||
return mIsUserSetupComplete;
|
||||
}
|
||||
|
||||
+28
@@ -18,13 +18,17 @@ package com.android.launcher3.taskbar;
|
||||
|
||||
import static android.view.accessibility.AccessibilityManager.FLAG_CONTENT_CONTROLS;
|
||||
import static android.view.accessibility.AccessibilityManager.FLAG_CONTENT_ICONS;
|
||||
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS;
|
||||
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK;
|
||||
|
||||
import static com.android.launcher3.taskbar.NavbarButtonsViewController.ALPHA_INDEX_IMMERSIVE_MODE;
|
||||
import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IMMERSIVE_MODE;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
|
||||
import com.android.launcher3.compat.AccessibilityManagerCompat;
|
||||
import com.android.launcher3.util.MultiValueAlpha;
|
||||
@@ -52,6 +56,21 @@ public class TaskbarForceVisibleImmersiveController implements TouchController {
|
||||
this::updateIconDimmingAlpha);
|
||||
private final Consumer<MultiValueAlpha> mImmersiveModeAlphaUpdater = alpha -> alpha.getProperty(
|
||||
ALPHA_INDEX_IMMERSIVE_MODE).setValue(mIconAlphaForDimming.value);
|
||||
private final View.AccessibilityDelegate mKidsModeAccessibilityDelegate =
|
||||
new View.AccessibilityDelegate() {
|
||||
@Override
|
||||
public boolean performAccessibilityAction(View host, int action, Bundle args) {
|
||||
if (action == ACTION_ACCESSIBILITY_FOCUS || action == ACTION_CLICK) {
|
||||
// Animate undimming of icons on an a11y event, followed by starting the
|
||||
// dimming animation (after its timeout has expired). Both can be called in
|
||||
// succession, as the playing of the two animations in a row is managed by
|
||||
// mHandler's message queue.
|
||||
startIconUndimming();
|
||||
startIconDimming();
|
||||
}
|
||||
return super.performAccessibilityAction(host, action, args);
|
||||
}
|
||||
};
|
||||
|
||||
// Initialized in init.
|
||||
private TaskbarControllers mControllers;
|
||||
@@ -77,12 +96,21 @@ public class TaskbarForceVisibleImmersiveController implements TouchController {
|
||||
} else {
|
||||
startIconUndimming();
|
||||
}
|
||||
mControllers.navbarButtonsViewController.setHomeButtonAccessibilityDelegate(
|
||||
mKidsModeAccessibilityDelegate);
|
||||
mControllers.navbarButtonsViewController.setBackButtonAccessibilityDelegate(
|
||||
mKidsModeAccessibilityDelegate);
|
||||
} else {
|
||||
mControllers.navbarButtonsViewController.setHomeButtonAccessibilityDelegate(null);
|
||||
mControllers.navbarButtonsViewController.setBackButtonAccessibilityDelegate(null);
|
||||
}
|
||||
}
|
||||
|
||||
/** Clean up animations. */
|
||||
public void onDestroy() {
|
||||
startIconUndimming();
|
||||
mControllers.navbarButtonsViewController.setHomeButtonAccessibilityDelegate(null);
|
||||
mControllers.navbarButtonsViewController.setBackButtonAccessibilityDelegate(null);
|
||||
}
|
||||
|
||||
private void startIconUndimming() {
|
||||
|
||||
@@ -36,6 +36,7 @@ import android.view.Display;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import com.android.launcher3.DeviceProfile;
|
||||
import com.android.launcher3.LauncherAppState;
|
||||
@@ -277,7 +278,8 @@ public class TaskbarManager {
|
||||
* we fully want to destroy an existing taskbar and create a new one.
|
||||
* In other case (folding/unfolding) we don't need to remove and add window.
|
||||
*/
|
||||
private void recreateTaskbar() {
|
||||
@VisibleForTesting
|
||||
public void recreateTaskbar() {
|
||||
DeviceProfile dp = mUserUnlocked ?
|
||||
LauncherAppState.getIDP(mContext).getDeviceProfile(mContext) : null;
|
||||
|
||||
|
||||
@@ -210,7 +210,10 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
StashedHandleViewController.ALPHA_INDEX_STASHED);
|
||||
mTaskbarStashedHandleHintScale = stashedHandleController.getStashedHandleHintScale();
|
||||
|
||||
boolean isManuallyStashedInApp = supportsManualStashing()
|
||||
// We use supportsVisualStashing() here instead of supportsManualStashing() because we want
|
||||
// it to work properly for tests that recreate taskbar. This check is here just to ensure
|
||||
// that taskbar unstashes when going to 3 button mode (supportsVisualStashing() false).
|
||||
boolean isManuallyStashedInApp = supportsVisualStashing()
|
||||
&& mPrefs.getBoolean(SHARED_PREFS_STASHED_KEY, DEFAULT_STASHED_PREF);
|
||||
boolean isInSetup = !mActivity.isUserSetupComplete() || setupUIVisible;
|
||||
updateStateForFlag(FLAG_STASHED_IN_APP_MANUAL, isManuallyStashedInApp);
|
||||
@@ -218,7 +221,10 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
updateStateForFlag(FLAG_IN_SETUP, isInSetup);
|
||||
updateStateForFlag(FLAG_STASHED_SMALL_SCREEN, isPhoneMode()
|
||||
&& !mActivity.isThreeButtonNav());
|
||||
applyState();
|
||||
// For now, assume we're in an app, since LauncherTaskbarUIController won't be able to tell
|
||||
// us that we're paused until a bit later. This avoids flickering upon recreating taskbar.
|
||||
updateStateForFlag(FLAG_IN_APP, true);
|
||||
applyState(/* duration = */ 0);
|
||||
|
||||
notifyStashChange(/* visible */ false, /* stashed */ isStashedInApp());
|
||||
}
|
||||
@@ -228,8 +234,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba
|
||||
* state.
|
||||
*/
|
||||
public boolean supportsVisualStashing() {
|
||||
return mControllers.uiController.supportsVisualStashing() ||
|
||||
(isPhoneMode() && !mActivity.isThreeButtonNav());
|
||||
return !mActivity.isThreeButtonNav() && mControllers.uiController.supportsVisualStashing();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -49,9 +49,13 @@ public class TaskbarUIController {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* This should only be called by TaskbarStashController so that a TaskbarUIController can
|
||||
* disable stashing. All other controllers should use
|
||||
* {@link TaskbarStashController#supportsVisualStashing()} as the source of truth.
|
||||
*/
|
||||
public boolean supportsVisualStashing() {
|
||||
if (mControllers == null) return false;
|
||||
return !mControllers.taskbarActivityContext.isThreeButtonNav();
|
||||
return true;
|
||||
}
|
||||
|
||||
protected void onStashedInAppChanged() { }
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.android.quickstep.views;
|
||||
|
||||
import static com.android.launcher3.anim.Interpolators.LINEAR;
|
||||
import static com.android.launcher3.util.SplitConfigurationOptions.DEFAULT_SPLIT_RATIO;
|
||||
import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_BOTTOM_OR_RIGHT;
|
||||
import static com.android.launcher3.util.SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT;
|
||||
@@ -318,7 +317,6 @@ public class GroupedTaskView extends TaskView {
|
||||
@Override
|
||||
protected void applyThumbnailSplashAlpha() {
|
||||
super.applyThumbnailSplashAlpha();
|
||||
mSnapshotView2.setSplashAlpha(
|
||||
Utilities.mapToRange(mTaskThumbnailSplashAlpha, 0f, 1f, 1f, 0f, LINEAR));
|
||||
mSnapshotView2.setSplashAlpha(mTaskThumbnailSplashAlpha);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1064,7 +1064,7 @@ public class TaskView extends FrameLayout implements Reusable {
|
||||
}
|
||||
|
||||
protected void applyThumbnailSplashAlpha() {
|
||||
mSnapshotView.setSplashAlpha(Utilities.boundToRange(mTaskThumbnailSplashAlpha, 0f, 1f));
|
||||
mSnapshotView.setSplashAlpha(mTaskThumbnailSplashAlpha);
|
||||
}
|
||||
|
||||
private void setSplitSelectTranslationX(float x) {
|
||||
|
||||
@@ -67,6 +67,13 @@ public class TaplTestsTaskbar extends AbstractQuickStepTest {
|
||||
mLauncher.getLaunchedAppState().showTaskbar();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHideTaskbarPersistsOnRecreate() {
|
||||
getTaskbar().hide();
|
||||
mLauncher.recreateTaskbar();
|
||||
mLauncher.getLaunchedAppState().assertTaskbarHidden();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testLaunchApp() throws Exception {
|
||||
getTaskbar().getAppIcon(TEST_APP_NAME).launch(TEST_APP_PACKAGE);
|
||||
|
||||
@@ -513,7 +513,7 @@ public class DeviceProfile {
|
||||
private int getIconToIconWidthForColumns(int columns) {
|
||||
return columns * getCellSize().x
|
||||
+ (columns - 1) * cellLayoutBorderSpacePx.x
|
||||
- (getCellSize().x - iconSizePx); // left and right cell space
|
||||
- getCellHorizontalSpace();
|
||||
}
|
||||
|
||||
private int getHorizontalMarginPx(InvariantDeviceProfile idp, Resources res) {
|
||||
@@ -984,6 +984,13 @@ public class DeviceProfile {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the left and right space on the cell, which is the cell width - icon size
|
||||
*/
|
||||
public int getCellHorizontalSpace() {
|
||||
return getCellSize().x - iconSizePx;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the number of panels within the workspace.
|
||||
*/
|
||||
|
||||
@@ -274,6 +274,10 @@ public final class FeatureFlags {
|
||||
"USE_SEARCH_REQUEST_TIMEOUT_OVERRIDES", false,
|
||||
"Use local overrides for search request timeout");
|
||||
|
||||
public static final BooleanFlag USE_APP_SEARCH_FOR_WEB = getDebugFlag(
|
||||
"USE_APP_SEARCH_FOR_WEB", false,
|
||||
"Use app search to request zero state web suggestions");
|
||||
|
||||
public static final BooleanFlag CONTINUOUS_VIEW_TREE_CAPTURE = getDebugFlag(
|
||||
"CONTINUOUS_VIEW_TREE_CAPTURE", false, "Capture View tree every frame");
|
||||
|
||||
|
||||
@@ -86,6 +86,7 @@ public final class TestProtocol {
|
||||
public static final String REQUEST_DISABLE_MANUAL_TASKBAR_STASHING = "disable-taskbar-stashing";
|
||||
public static final String REQUEST_UNSTASH_TASKBAR_IF_STASHED = "unstash-taskbar-if-stashed";
|
||||
public static final String REQUEST_STASHED_TASKBAR_HEIGHT = "stashed-taskbar-height";
|
||||
public static final String REQUEST_RECREATE_TASKBAR = "recreate-taskbar";
|
||||
public static final String REQUEST_APP_LIST_FREEZE_FLAGS = "app-list-freeze-flags";
|
||||
public static final String REQUEST_APPS_LIST_SCROLL_Y = "apps-list-scroll-y";
|
||||
public static final String REQUEST_WIDGETS_SCROLL_Y = "widgets-scroll-y";
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.launcher3.tapl;
|
||||
|
||||
import static com.android.launcher3.tapl.LauncherInstrumentation.TASKBAR_RES_ID;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_DISABLE_MANUAL_TASKBAR_STASHING;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_ENABLE_MANUAL_TASKBAR_STASHING;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_STASHED_TASKBAR_HEIGHT;
|
||||
@@ -54,12 +55,22 @@ public final class LaunchedAppState extends Background {
|
||||
public Taskbar getTaskbar() {
|
||||
try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
|
||||
"want to get the taskbar")) {
|
||||
mLauncher.waitForLauncherObject("taskbar_view");
|
||||
mLauncher.waitForLauncherObject(TASKBAR_RES_ID);
|
||||
|
||||
return new Taskbar(mLauncher);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Waits for the taskbar to be hidden, or fails.
|
||||
*/
|
||||
public void assertTaskbarHidden() {
|
||||
try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
|
||||
"waiting for taskbar to be hidden")) {
|
||||
mLauncher.waitUntilLauncherObjectGone(TASKBAR_RES_ID);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Taskbar in a visible state.
|
||||
*
|
||||
@@ -71,7 +82,7 @@ public final class LaunchedAppState extends Background {
|
||||
try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck();
|
||||
LauncherInstrumentation.Closable c1 = mLauncher.addContextLayer(
|
||||
"want to show the taskbar")) {
|
||||
mLauncher.waitUntilLauncherObjectGone("taskbar_view");
|
||||
mLauncher.waitUntilLauncherObjectGone(TASKBAR_RES_ID);
|
||||
|
||||
final long downTime = SystemClock.uptimeMillis();
|
||||
final int unstashTargetY = mLauncher.getRealDisplaySize().y
|
||||
@@ -85,7 +96,7 @@ public final class LaunchedAppState extends Background {
|
||||
LauncherInstrumentation.log("showTaskbar: sent down");
|
||||
|
||||
try (LauncherInstrumentation.Closable c2 = mLauncher.addContextLayer("pressed down")) {
|
||||
mLauncher.waitForLauncherObject("taskbar_view");
|
||||
mLauncher.waitForLauncherObject(TASKBAR_RES_ID);
|
||||
mLauncher.sendPointer(downTime, downTime, MotionEvent.ACTION_UP, unstashTarget,
|
||||
LauncherInstrumentation.GestureScope.OUTSIDE_WITH_PILFER);
|
||||
|
||||
|
||||
@@ -168,7 +168,7 @@ public final class LauncherInstrumentation {
|
||||
private static final String OVERVIEW_RES_ID = "overview_panel";
|
||||
private static final String WIDGETS_RES_ID = "primary_widgets_list_view";
|
||||
private static final String CONTEXT_MENU_RES_ID = "popup_container";
|
||||
private static final String TASKBAR_RES_ID = "taskbar_view";
|
||||
static final String TASKBAR_RES_ID = "taskbar_view";
|
||||
private static final String SPLIT_PLACEHOLDER_RES_ID = "split_placeholder";
|
||||
public static final int WAIT_TIME_MS = 30000;
|
||||
private static final String SYSTEMUI_PACKAGE = "com.android.systemui";
|
||||
@@ -1755,6 +1755,15 @@ public final class LauncherInstrumentation {
|
||||
getTestInfo(TestProtocol.REQUEST_UNSTASH_TASKBAR_IF_STASHED);
|
||||
}
|
||||
|
||||
/**
|
||||
* Recreates the taskbar (outside of tests this is done for certain configuration changes).
|
||||
* The expected behavior is that the taskbar retains its current state after being recreated.
|
||||
* For example, if taskbar is currently stashed, it should still be stashed after recreating.
|
||||
*/
|
||||
public void recreateTaskbar() {
|
||||
getTestInfo(TestProtocol.REQUEST_RECREATE_TASKBAR);
|
||||
}
|
||||
|
||||
public List<String> getHotseatIconNames() {
|
||||
return getTestInfo(TestProtocol.REQUEST_HOTSEAT_ICON_NAMES)
|
||||
.getStringArrayList(TestProtocol.TEST_INFO_RESPONSE_FIELD);
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.android.launcher3.tapl;
|
||||
|
||||
import static com.android.launcher3.tapl.LauncherInstrumentation.TASKBAR_RES_ID;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_DISABLE_MANUAL_TASKBAR_STASHING;
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.REQUEST_ENABLE_MANUAL_TASKBAR_STASHING;
|
||||
|
||||
@@ -51,7 +52,7 @@ public final class Taskbar {
|
||||
try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
|
||||
"want to get a taskbar icon")) {
|
||||
return new TaskbarAppIcon(mLauncher, mLauncher.waitForObjectInContainer(
|
||||
mLauncher.waitForLauncherObject("taskbar_view"),
|
||||
mLauncher.waitForLauncherObject(TASKBAR_RES_ID),
|
||||
AppIcon.getAppIconSelector(appName, mLauncher)));
|
||||
}
|
||||
}
|
||||
@@ -67,7 +68,7 @@ public final class Taskbar {
|
||||
try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
|
||||
"want to hide the taskbar");
|
||||
LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
|
||||
mLauncher.waitForLauncherObject("taskbar_view");
|
||||
mLauncher.waitForLauncherObject(TASKBAR_RES_ID);
|
||||
|
||||
final long downTime = SystemClock.uptimeMillis();
|
||||
Point stashTarget = new Point(
|
||||
@@ -96,7 +97,7 @@ public final class Taskbar {
|
||||
LauncherInstrumentation.Closable e = mLauncher.eventsCheck()) {
|
||||
|
||||
mLauncher.clickLauncherObject(mLauncher.waitForObjectInContainer(
|
||||
mLauncher.waitForLauncherObject("taskbar_view"), getAllAppsButtonSelector()));
|
||||
mLauncher.waitForLauncherObject(TASKBAR_RES_ID), getAllAppsButtonSelector()));
|
||||
|
||||
return new AllAppsFromTaskbar(mLauncher);
|
||||
}
|
||||
@@ -107,7 +108,7 @@ public final class Taskbar {
|
||||
try (LauncherInstrumentation.Closable c = mLauncher.addContextLayer(
|
||||
"want to get all taskbar icons")) {
|
||||
return mLauncher.waitForObjectsInContainer(
|
||||
mLauncher.waitForLauncherObject("taskbar_view"),
|
||||
mLauncher.waitForLauncherObject(TASKBAR_RES_ID),
|
||||
AppIcon.getAnyAppIconSelector())
|
||||
.stream()
|
||||
.map(UiObject2::getText)
|
||||
|
||||
Reference in New Issue
Block a user