diff --git a/src/com/android/launcher3/popup/PopupContainerWithArrow.java b/src/com/android/launcher3/popup/PopupContainerWithArrow.java index 4f1fcda122..12319f75e5 100644 --- a/src/com/android/launcher3/popup/PopupContainerWithArrow.java +++ b/src/com/android/launcher3/popup/PopupContainerWithArrow.java @@ -221,6 +221,10 @@ public class PopupContainerWithArrow extends ArrowPopup implements DragSource, factory.getEnabledShortcuts(mLauncher, item)); } + public ViewGroup getSystemShortcutContainerForTesting() { + return mSystemShortcutContainer; + } + @TargetApi(Build.VERSION_CODES.P) protected void populateAndShow(final BubbleTextView originalIcon, int shortcutCount, final List notificationKeys, List systemShortcuts) { diff --git a/src/com/android/launcher3/views/OptionsPopupView.java b/src/com/android/launcher3/views/OptionsPopupView.java index 3e58ea6739..c540b59c1c 100644 --- a/src/com/android/launcher3/views/OptionsPopupView.java +++ b/src/com/android/launcher3/views/OptionsPopupView.java @@ -136,7 +136,7 @@ public class OptionsPopupView extends ArrowPopup } @VisibleForTesting - public static OptionsPopupView getOptionsPopup(Launcher launcher) { + public static ArrowPopup getOptionsPopup(Launcher launcher) { return launcher.findViewById(R.id.deep_shortcuts_container); } diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java index c878699c50..532d3e8b00 100644 --- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java +++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java @@ -56,6 +56,7 @@ import org.junit.Rule; import org.junit.rules.TestRule; import org.junit.runners.model.Statement; +import java.io.IOException; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -168,6 +169,16 @@ public abstract class AbstractLauncherUiTest { } } + protected void clearLauncherData() throws IOException { + if (TestHelpers.isInLauncherProcess()) { + LauncherSettings.Settings.call(mTargetContext.getContentResolver(), + LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB); + resetLoaderState(); + } else { + mDevice.executeShellCommand("pm clear " + mDevice.getLauncherPackageName()); + } + } + /** * Scrolls the {@param container} until it finds an object matching {@param condition}. * @return the matching object. @@ -261,6 +272,10 @@ public abstract class AbstractLauncherUiTest { launcher -> launcher.getStateManager().getState() == state); } + protected void waitForResumed(String message) { + waitForLauncherCondition(message, launcher -> launcher.hasBeenResumed()); + } + // Cannot be used in TaplTests after injecting any gesture using Tapl because this can hide // flakiness. protected void waitForLauncherCondition(String message, Function condition) { diff --git a/tests/src/com/android/launcher3/ui/TestViewHelpers.java b/tests/src/com/android/launcher3/ui/TestViewHelpers.java index 524438642e..6fa28f1c91 100644 --- a/tests/src/com/android/launcher3/ui/TestViewHelpers.java +++ b/tests/src/com/android/launcher3/ui/TestViewHelpers.java @@ -28,6 +28,8 @@ import android.os.Process; import android.os.SystemClock; import android.util.Log; import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; import androidx.test.uiautomator.By; import androidx.test.uiautomator.BySelector; @@ -42,6 +44,7 @@ import com.android.launcher3.testcomponent.AppWidgetNoConfig; import com.android.launcher3.testcomponent.AppWidgetWithConfig; import java.util.concurrent.Callable; +import java.util.function.Function; public class TestViewHelpers { private static final String TAG = "TestViewHelpers"; @@ -183,4 +186,12 @@ public class TestViewHelpers { AbstractLauncherUiTest.DEFAULT_UI_TIMEOUT).click(); return findViewById(R.id.widgets_list_view); } + + public static View findChildView(ViewGroup parent, Function condition) { + for (int i = 0; i < parent.getChildCount(); ++i) { + final View child = parent.getChildAt(i); + if (condition.apply(child)) return child; + } + return null; + } }