Add RESTRICTED bucket tests.

Make sure user launch removes an app from the RESTRICTED bucket and that
a user can force an app into the RESTRICTED bucket.

Bug: 145551233
Test: atest android.app.usage.cts.UsageStatsTest
Change-Id: If5d69f5dbf32dd18cccf0c270a8feaf967f91050
diff --git a/tests/tests/app.usage/src/android/app/usage/cts/UsageStatsTest.java b/tests/tests/app.usage/src/android/app/usage/cts/UsageStatsTest.java
index 7fe1b0a..84259e1 100644
--- a/tests/tests/app.usage/src/android/app/usage/cts/UsageStatsTest.java
+++ b/tests/tests/app.usage/src/android/app/usage/cts/UsageStatsTest.java
@@ -24,7 +24,14 @@
 import static org.junit.Assume.assumeFalse;
 import static org.junit.Assume.assumeTrue;
 
-import android.app.*;
+import android.app.Activity;
+import android.app.ActivityManager;
+import android.app.AppOpsManager;
+import android.app.KeyguardManager;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
 import android.app.usage.EventStats;
 import android.app.usage.UsageEvents;
 import android.app.usage.UsageEvents.Event;
@@ -51,8 +58,8 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.compatibility.common.util.AppStandbyUtils;
-
 import com.android.compatibility.common.util.SystemUtil;
+
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
@@ -601,6 +608,34 @@
         fail("Couldn't find a user unlocked event.");
     }
 
+    @Test
+    public void testUserForceIntoRestricted() throws IOException {
+        launchSubActivity(TaskRootActivity.class);
+        assertEquals("Activity launch didn't bring app up to ACTIVE bucket",
+                UsageStatsManager.STANDBY_BUCKET_ACTIVE,
+                mUsageStatsManager.getAppStandbyBucket(mTargetPackage));
+
+        // User force shouldn't have to deal with the timeout.
+        mUiDevice.executeShellCommand("am set-standby-bucket " + mTargetPackage + " restricted");
+        assertEquals("User was unable to force an ACTIVE app down into RESTRICTED bucket",
+                UsageStatsManager.STANDBY_BUCKET_RESTRICTED,
+                mUsageStatsManager.getAppStandbyBucket(mTargetPackage));
+
+    }
+
+    @Test
+    public void testUserLaunchRemovesFromRestricted() throws IOException {
+        mUiDevice.executeShellCommand("am set-standby-bucket " + mTargetPackage + " restricted");
+        assertEquals("User was unable to force an app into RESTRICTED bucket",
+                UsageStatsManager.STANDBY_BUCKET_RESTRICTED,
+                mUsageStatsManager.getAppStandbyBucket(mTargetPackage));
+
+        launchSubActivity(TaskRootActivity.class);
+        assertEquals("Activity launch didn't bring RESTRICTED app into ACTIVE bucket",
+                UsageStatsManager.STANDBY_BUCKET_ACTIVE,
+                mUsageStatsManager.getAppStandbyBucket(mTargetPackage));
+    }
+
     static final int[] INTERACTIVE_EVENTS = new int[] {
             Event.SCREEN_INTERACTIVE,
             Event.SCREEN_NON_INTERACTIVE
@@ -1158,8 +1193,6 @@
         assertEquals("Unexpected number of activity stops", 2, stops);
     }
 
-
-
     @AppModeFull(reason = "No usage events access in instant apps")
     @Test
     public void testSuddenDestroy() throws Exception {