Fix testSuspendPackage for AAOS

- Un-skips the tests for AAOS
- Used `com.android.car.setting` and AAOS specific resource id

Fixes: 181168146
Fixes: 182387060
Bug: 192395248
Test: atest CtsDevicePolicyManagerTestCases:\
com.android.cts.devicepolicy.MixedProfileOwnerTest#testSuspendPackage,\
testSuspendPackageWithPackageManager

Change-Id: I0ba7aaddc7986bf0470cd3afcddd44e8408e24b6
diff --git a/hostsidetests/devicepolicy/app/IntentSender/src/com/android/cts/intent/sender/SuspendPackageTest.java b/hostsidetests/devicepolicy/app/IntentSender/src/com/android/cts/intent/sender/SuspendPackageTest.java
index 16d4f03..f17da74 100644
--- a/hostsidetests/devicepolicy/app/IntentSender/src/com/android/cts/intent/sender/SuspendPackageTest.java
+++ b/hostsidetests/devicepolicy/app/IntentSender/src/com/android/cts/intent/sender/SuspendPackageTest.java
@@ -9,7 +9,6 @@
 import android.content.pm.ResolveInfo;
 import android.content.res.Configuration;
 import android.os.UserHandle;
-import android.os.UserManager;
 import android.provider.Settings;
 import android.support.test.uiautomator.By;
 import android.support.test.uiautomator.BySelector;
@@ -29,6 +28,10 @@
             .clazz(android.widget.TextView.class.getName())
             .res("android:id/alertTitle")
             .pkg("com.google.android.apps.wearable.settings");
+    private static final BySelector POPUP_TITLE_AUTOMOTIVE_SELECTOR = By
+            .clazz(android.widget.TextView.class.getName())
+            .res("com.android.car.settings:id/car_ui_alert_title")
+            .pkg("com.android.car.settings");
 
     private static final BySelector SUSPEND_BUTTON_SELECTOR = By
             .clazz(android.widget.Button.class.getName())
@@ -39,6 +42,7 @@
     private PackageManager mPackageManager;
     private UiAutomation mUiAutomation;
 
+    private static final String DEFAULT_SETTINGS_PKG = "com.android.settings";
     private static final String INTENT_RECEIVER_PKG = "com.android.cts.intent.receiver";
     private static final String TARGET_ACTIVITY_NAME =
             "com.android.cts.intent.receiver.SimpleIntentReceiverActivity";
@@ -50,16 +54,11 @@
         String packageName = mContext.getPackageName();
         int userId = mContext.getUserId();
         Class<IntentSenderActivity> activityClass = IntentSenderActivity.class;
-        if (temporarilySkipActivityLaunch()) {
-            Log.w(TAG, "setup(): not launching " + activityClass + " on user " + userId
-                    + " as launcher on automotive doesn't support suspended apps yet");
-        } else {
-            Log.d(TAG, "setup(): launching " + activityClass + " on user " + userId);
-            mActivity = launchActivity(packageName, activityClass, null);
-            assertWithMessage("activity %s launched on package %s on user %s",
-                    activityClass, packageName, userId).that(mActivity).isNotNull();
-            Log.d(TAG, "setup(): launched activity " + mActivity);
-        }
+        Log.d(TAG, "setup(): launching " + activityClass + " on user " + userId);
+        mActivity = launchActivity(packageName, activityClass, null);
+        assertWithMessage("activity %s launched on package %s on user %s",
+                activityClass, packageName, userId).that(mActivity).isNotNull();
+        Log.d(TAG, "setup(): launched activity " + mActivity);
         mPackageManager = mContext.getPackageManager();
         mUiAutomation = getInstrumentation().getUiAutomation();
     }
@@ -72,11 +71,6 @@
         super.tearDown();
     }
 
-    // TODO(b/182387060): STOPSHIP temporarily hack until CarLauncher supports it
-    private boolean temporarilySkipActivityLaunch() {
-        return UserManager.isHeadlessSystemUserMode();
-    }
-
     public void testPackageSuspended() throws Exception {
         assertPackageSuspended(/* suspended= */ true, /* customDialog= */ false);
     }
@@ -96,24 +90,22 @@
     private void assertPackageSuspended(boolean suspended, boolean customDialog) throws Exception {
         Intent intent = new Intent();
         intent.setClassName(INTENT_RECEIVER_PKG, TARGET_ACTIVITY_NAME);
-        if (!temporarilySkipActivityLaunch()) {
-            Intent result = mActivity.getResult(intent);
-            Log.d(TAG, "assertPackageSuspended(suspended=" + suspended
-                    + ", customDialog=" + customDialog + "): result for activity "
-                    + INTENT_RECEIVER_PKG + "/" + TARGET_ACTIVITY_NAME + " on user "
-                    + mContext.getUserId() + ": " + result);
-            if (suspended) {
-                if (customDialog) {
-                    dismissCustomDialog();
-                } else {
-                    dismissPolicyTransparencyDialog();
-                }
-                assertWithMessage("result for activitiy %s while suspended", intent).that(result)
-                        .isNull();
+        Intent result = mActivity.getResult(intent);
+        Log.d(TAG, "assertPackageSuspended(suspended=" + suspended
+                + ", customDialog=" + customDialog + "): result for activity "
+                + INTENT_RECEIVER_PKG + "/" + TARGET_ACTIVITY_NAME + " on user "
+                + mContext.getUserId() + ": " + result);
+        if (suspended) {
+            if (customDialog) {
+                dismissCustomDialog();
             } else {
-                assertWithMessage("result for activitiy %s while NOT suspended", intent)
-                        .that(result).isNotNull();
+                dismissPolicyTransparencyDialog();
             }
+            assertWithMessage("result for activitiy %s while suspended", intent).that(result)
+                    .isNull();
+        } else {
+            assertWithMessage("result for activitiy %s while NOT suspended", intent)
+                    .that(result).isNotNull();
         }
         // No matter if it is suspended or not, we should be able to resolve the activity.
         ResolveInfo resolveInfo = mPackageManager.resolveActivity(intent, /* flags= */ 0);
@@ -131,6 +123,18 @@
             final UiObject2 title = device.findObject(POPUP_TITLE_WATCH_SELECTOR);
             assertWithMessage("Policy transparency dialog title").that(title).isNotNull();
             title.swipe(Direction.RIGHT, 1.0f);
+        } else if (isAutomotive()) {
+            device.wait(Until.hasObject(POPUP_TITLE_AUTOMOTIVE_SELECTOR),
+                    WAIT_DIALOG_TIMEOUT_IN_MS);
+            Log.d(TAG, "waiting for " + POPUP_TITLE_AUTOMOTIVE_SELECTOR);
+            final UiObject2 title = device.findObject(POPUP_TITLE_AUTOMOTIVE_SELECTOR);
+            assertWithMessage("Policy transparency dialog title").that(title).isNotNull();
+            // "OK" button only present in the dialog if it is blocked by policy.
+            BySelector selector = getPopUpButtonSelector();
+            Log.d(TAG, "waiting for " + selector);
+            final UiObject2 button = device.findObject(getPopUpButtonSelector());
+            assertWithMessage("OK button").that(button).isNotNull();
+            button.click();
         } else {
             device.wait(Until.hasObject(getPopUpImageSelector()), WAIT_DIALOG_TIMEOUT_IN_MS);
             final UiObject2 icon = device.findObject(getPopUpImageSelector());
@@ -155,6 +159,10 @@
                 & Configuration.UI_MODE_TYPE_MASK) == Configuration.UI_MODE_TYPE_WATCH;
     }
 
+    private boolean isAutomotive() {
+        return mPackageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
+    }
+
     private String getSettingsPackageName() {
         String settingsPackageName = "com.android.settings";
         try {
@@ -163,12 +171,13 @@
                     new Intent(Settings.ACTION_SETTINGS), PackageManager.MATCH_SYSTEM_ONLY,
                     UserHandle.USER_SYSTEM);
             if (resolveInfo != null && resolveInfo.activityInfo != null) {
-                settingsPackageName = resolveInfo.activityInfo.packageName;
+                return resolveInfo.activityInfo.packageName;
             }
+            Log.w(TAG, "Unable to resolve ACTION_SETTINGS intent.");
+            return DEFAULT_SETTINGS_PKG;
         } finally {
             mUiAutomation.dropShellPermissionIdentity();
         }
-        return settingsPackageName;
     }
 
     private BySelector getPopUpButtonSelector() {