Adding wellbeing toast test
Bug: 130914022
Change-Id: I777440884c122ec040e5e00bfbed41f2eb86b5b0
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/DigitalWellBeingToast.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/DigitalWellBeingToast.java
index b9791bf..204dd56 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/DigitalWellBeingToast.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/DigitalWellBeingToast.java
@@ -32,7 +32,6 @@
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
-import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -69,6 +68,10 @@
mLauncherApps = context.getSystemService(LauncherApps.class);
}
+ public TextView getTextView() {
+ return mText;
+ }
+
@Override
protected void onFinishInflate() {
super.onFinishInflate();
diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java
index ec0112d..05fe2d0 100644
--- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskView.java
@@ -212,6 +212,10 @@
return mMenuView;
}
+ public DigitalWellBeingToast getDigitalWellBeingToast() {
+ return mDigitalWellBeingToast;
+ }
+
/**
* Updates this task view to the given {@param task}.
*/
diff --git a/quickstep/tests/src/com/android/quickstep/DigitalWellBeingToastTest.java b/quickstep/tests/src/com/android/quickstep/DigitalWellBeingToastTest.java
new file mode 100644
index 0000000..aa11384
--- /dev/null
+++ b/quickstep/tests/src/com/android/quickstep/DigitalWellBeingToastTest.java
@@ -0,0 +1,76 @@
+package com.android.quickstep;
+
+import static androidx.test.InstrumentationRegistry.getInstrumentation;
+
+import static com.android.launcher3.LauncherState.OVERVIEW;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import android.app.PendingIntent;
+import android.app.usage.UsageStatsManager;
+import android.content.Intent;
+
+import com.android.launcher3.Launcher;
+import com.android.quickstep.views.DigitalWellBeingToast;
+import com.android.quickstep.views.RecentsView;
+import com.android.quickstep.views.TaskView;
+
+import org.junit.Test;
+
+import java.time.Duration;
+
+public class DigitalWellBeingToastTest extends AbstractQuickStepTest {
+ private static final String CALCULATOR_PACKAGE =
+ resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR);
+
+ @Test
+ public void testToast() throws Exception {
+ final UsageStatsManager usageStatsManager =
+ mTargetContext.getSystemService(UsageStatsManager.class);
+ final int observerId = 0;
+
+ getInstrumentation().getUiAutomation().adoptShellPermissionIdentity();
+ try {
+ final String[] packages = new String[]{CALCULATOR_PACKAGE};
+
+ // Set time limit for app.
+ usageStatsManager.registerAppUsageLimitObserver(observerId, packages,
+ Duration.ofSeconds(600), Duration.ofSeconds(300),
+ PendingIntent.getActivity(mTargetContext, -1, new Intent(), 0));
+
+ mLauncher.pressHome();
+ final DigitalWellBeingToast toast = getToast();
+
+ assertTrue("Toast is not visible", toast.isShown());
+ assertEquals("Toast text: ", "5 minutes left today", toast.getTextView().getText());
+
+ // Unset time limit for app.
+ usageStatsManager.unregisterAppUsageLimitObserver(observerId);
+
+ mLauncher.pressHome();
+ assertFalse("Toast is visible", getToast().isShown());
+ } finally {
+ usageStatsManager.unregisterAppUsageLimitObserver(observerId);
+ getInstrumentation().getUiAutomation().dropShellPermissionIdentity();
+ }
+ }
+
+ private DigitalWellBeingToast getToast() {
+ executeOnLauncher(launcher -> launcher.getStateManager().goToState(OVERVIEW));
+ waitForState("Launcher internal state didn't switch to Overview", OVERVIEW);
+ waitForLauncherCondition("No latest task", launcher -> getLatestTask(launcher) != null);
+
+ return getFromLauncher(launcher -> {
+ final TaskView task = getLatestTask(launcher);
+ assertTrue("Latest task is not Calculator",
+ CALCULATOR_PACKAGE.equals(task.getTask().getTopComponent().getPackageName()));
+ return task.getDigitalWellBeingToast();
+ });
+ }
+
+ private TaskView getLatestTask(Launcher launcher) {
+ return launcher.<RecentsView>getOverviewPanel().getTaskViewAt(0);
+ }
+}
diff --git a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
index ab2808d..71e7880 100644
--- a/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
+++ b/tests/src/com/android/launcher3/ui/AbstractLauncherUiTest.java
@@ -361,7 +361,7 @@
mDevice.wait(Until.hasObject(By.pkg(packageName).depth(0)), LONG_WAIT_TIME_MS));
}
- protected String resolveSystemApp(String category) {
+ protected static String resolveSystemApp(String category) {
return getInstrumentation().getContext().getPackageManager().resolveActivity(
new Intent(Intent.ACTION_MAIN).addCategory(category),
PackageManager.MATCH_SYSTEM_ONLY).