Merge "Remove second_button from condition tile. It's never used."
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index f60d99e..109f2b9 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1560,7 +1560,7 @@
             android:enabled="false"
             android:exported="true"
             android:taskAffinity="com.android.wizard"
-            android:theme="@style/SuwThemeGlif.Light"
+            android:theme="@style/SuwThemeGlif.DayNight"
             android:label="@string/lock_screen_notifications_interstitial_title"
             android:icon="@drawable/ic_suggested_notifications">
             <intent-filter>
diff --git a/res/layout/master_clear.xml b/res/layout/master_clear.xml
index 247eedc..8d4d623 100644
--- a/res/layout/master_clear.xml
+++ b/res/layout/master_clear.xml
@@ -21,7 +21,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    android:theme="@style/SuwThemeGlifV3.Light"
+    android:theme="@style/SuwThemeGlifV3.DayNight"
     android:icon="@drawable/ic_delete_accent"
     app:suwHeaderText="@string/master_clear_title">
 
diff --git a/res/layout/master_clear_confirm.xml b/res/layout/master_clear_confirm.xml
index 146fb77..d513dbb 100644
--- a/res/layout/master_clear_confirm.xml
+++ b/res/layout/master_clear_confirm.xml
@@ -19,7 +19,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical"
-    android:theme="@style/SuwThemeGlifV3.Light"
+    android:theme="@style/SuwThemeGlifV3.DayNight"
     android:id="@+id/setup_wizard_layout"
     android:icon="@drawable/ic_delete_accent"
     app:suwHeaderText="@string/master_clear_confirm_title">
diff --git a/res/values/themes_suw.xml b/res/values/themes_suw.xml
index f09b2b1..d66f917 100644
--- a/res/values/themes_suw.xml
+++ b/res/values/themes_suw.xml
@@ -17,7 +17,7 @@
 
 <!-- SUW related themes -->
 <resources>
-    <style name="GlifTheme" parent="SuwThemeGlif">
+    <style name="GlifTheme" parent="SuwThemeGlif.DayNight">
         <!-- For all AndroidX Alert Dialogs -->
         <item name="alertDialogTheme">@style/ThemeOverlay.AlertDialog</item>
         <item name="android:windowBackground">?android:attr/colorBackground</item>
@@ -55,7 +55,7 @@
         <item name="*android:colorError">@color/glif_error_color</item>
     </style>
 
-    <style name="GlifV2Theme" parent="SuwThemeGlifV2">
+    <style name="GlifV2Theme" parent="SuwThemeGlifV2.DayNight">
         <!-- For all AndroidX Alert Dialogs -->
         <item name="alertDialogTheme">@style/GlifV2ThemeAlertDialog</item>
         <item name="android:windowBackground">?android:attr/colorBackground</item>
@@ -93,7 +93,7 @@
         <item name="*android:colorError">@color/glif_error_color</item>
     </style>
 
-    <style name="GlifV3Theme" parent="SuwThemeGlifV3">
+    <style name="GlifV3Theme" parent="SuwThemeGlifV3.DayNight">
         <!-- For all AndroidX Alert Dialogs -->
         <item name="alertDialogTheme">@style/GlifV2ThemeAlertDialog</item>
         <item name="android:windowBackground">?android:attr/colorBackground</item>
diff --git a/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceController.java b/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceController.java
index 64af3c2..4c7dd81 100644
--- a/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceController.java
@@ -30,7 +30,8 @@
 
     @Override
     protected boolean hasAppCapability() {
-        return DefaultBrowserPreferenceController.hasBrowserPreference(mPackageName, mContext);
+        return DefaultBrowserPreferenceController
+                .hasBrowserPreference(mPackageName, mContext, UserHandle.myUserId());
     }
 
     @Override
diff --git a/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java b/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java
index 626048d..cfaac3a 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java
@@ -62,7 +62,7 @@
 
         for (ResolveInfo info : list) {
             try {
-                candidates.add(new DefaultAppInfo(context, mPm,
+                candidates.add(new DefaultAppInfo(context, mPm, mUserId,
                         mPm.getApplicationInfoAsUser(info.activityInfo.packageName, 0, mUserId)));
             } catch (PackageManager.NameNotFoundException e) {
                 // Skip unknown packages.
diff --git a/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java
index 9e76ff5..24b4dcd 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceController.java
@@ -29,6 +29,7 @@
 import android.util.IconDrawableFactory;
 import android.util.Log;
 
+import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 
 import com.android.settingslib.applications.DefaultAppInfo;
@@ -75,8 +76,8 @@
         try {
             final String packageName = mPackageManager.getDefaultBrowserPackageNameAsUser(mUserId);
             Log.d(TAG, "Get default browser package: " + packageName);
-            return new DefaultAppInfo(mContext, mPackageManager,
-                    mPackageManager.getApplicationInfo(packageName, 0));
+            return new DefaultAppInfo(mContext, mPackageManager, mUserId,
+                    mPackageManager.getApplicationInfoAsUser(packageName, 0, mUserId));
         } catch (PackageManager.NameNotFoundException e) {
             return null;
         }
@@ -143,7 +144,8 @@
         return null;
     }
 
-    private Drawable getOnlyAppIcon() {
+    @VisibleForTesting
+    Drawable getOnlyAppIcon() {
         final List<ResolveInfo> list = getCandidates(mPackageManager, mUserId);
         if (list != null && list.size() == 1) {
             final ResolveInfo info = list.get(0);
@@ -154,7 +156,7 @@
             }
             final ApplicationInfo appInfo;
             try {
-                appInfo = mPackageManager.getApplicationInfo(packageName, 0);
+                appInfo = mPackageManager.getApplicationInfoAsUser(packageName, 0, mUserId);
             } catch (PackageManager.NameNotFoundException e) {
                 Log.w(TAG, "Error getting app info for " + packageName);
                 return null;
@@ -169,11 +171,11 @@
     /**
      * Whether or not the pkg contains browser capability
      */
-    public static boolean hasBrowserPreference(String pkg, Context context) {
+    public static boolean hasBrowserPreference(String pkg, Context context, int userId) {
         final Intent intent = new Intent(BROWSE_PROBE);
         intent.setPackage(pkg);
-        final List<ResolveInfo> resolveInfos =
-                context.getPackageManager().queryIntentActivities(intent, 0);
+        final List<ResolveInfo> resolveInfos = context.getPackageManager()
+                .queryIntentActivitiesAsUser(intent, 0 /* flags */, userId);
         return resolveInfos != null && resolveInfos.size() != 0;
     }
 
diff --git a/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java b/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java
index f6f8a56..76e93cc 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java
@@ -58,7 +58,7 @@
                 final PackageInfo packageInfo =
                         mPm.getPackageInfo(info.activityInfo.packageName, 0);
                 final ApplicationInfo appInfo = packageInfo.applicationInfo;
-                candidates.add(new DefaultAppInfo(context, mPm, appInfo));
+                candidates.add(new DefaultAppInfo(context, mPm, mUserId, appInfo));
                 // Get earliest installed system app.
                 if (isSystemApp(appInfo) && (bestMatch == null ||
                         bestMatch.firstInstallTime > packageInfo.firstInstallTime)) {
diff --git a/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java b/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java
index 0bda2ec..72f1cc5 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java
@@ -58,7 +58,7 @@
         final Context context = getContext();
         for (String packageName : dialerPackages) {
             try {
-                candidates.add(new DefaultAppInfo(context, mPm,
+                candidates.add(new DefaultAppInfo(context, mPm, mUserId,
                         mPm.getApplicationInfoAsUser(packageName, 0, mUserId)));
             } catch (PackageManager.NameNotFoundException e) {
                 // Skip unknown packages.
diff --git a/src/com/android/settings/applications/defaultapps/DefaultPhonePreferenceController.java b/src/com/android/settings/applications/defaultapps/DefaultPhonePreferenceController.java
index 95264b1..7b7755d 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultPhonePreferenceController.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultPhonePreferenceController.java
@@ -59,7 +59,8 @@
     @Override
     protected DefaultAppInfo getDefaultAppInfo() {
         try {
-            return new DefaultAppInfo(mContext, mPackageManager, mPackageManager.getApplicationInfo(
+            return new DefaultAppInfo(mContext, mPackageManager, mUserId,
+                    mPackageManager.getApplicationInfo(
                     DefaultDialerManager.getDefaultDialerApplication(mContext, mUserId), 0));
         } catch (PackageManager.NameNotFoundException e) {
             return null;
diff --git a/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java b/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java
index f8b1596..6d1e21d 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java
@@ -55,7 +55,7 @@
 
         for (SmsApplication.SmsApplicationData smsApplicationData : smsApplications) {
             try {
-                candidates.add(new DefaultAppInfo(context, mPm,
+                candidates.add(new DefaultAppInfo(context, mPm, mUserId,
                         mPm.getApplicationInfoAsUser(smsApplicationData.mPackageName, 0, mUserId)));
             } catch (PackageManager.NameNotFoundException e) {
                 // Skip unknown packages.
diff --git a/src/com/android/settings/development/WebViewAppPreferenceController.java b/src/com/android/settings/development/WebViewAppPreferenceController.java
index 74d6c10..37653cc 100644
--- a/src/com/android/settings/development/WebViewAppPreferenceController.java
+++ b/src/com/android/settings/development/WebViewAppPreferenceController.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
+import android.os.UserHandle;
 import android.text.TextUtils;
 import android.util.Log;
 
@@ -66,7 +67,7 @@
     @VisibleForTesting
     DefaultAppInfo getDefaultAppInfo() {
         final PackageInfo currentPackage = mWebViewUpdateServiceWrapper.getCurrentWebViewPackage();
-        return new DefaultAppInfo(mContext, mPackageManager,
+        return new DefaultAppInfo(mContext, mPackageManager, UserHandle.myUserId(),
                 currentPackage == null ? null : currentPackage.applicationInfo);
     }
 
diff --git a/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java b/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java
index f5010f9..5ca8fea 100644
--- a/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java
+++ b/src/com/android/settings/enterprise/ActionDisabledByAdminDialogHelper.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.enterprise;
 
+import android.annotation.NonNull;
 import android.annotation.UserIdInt;
 import android.app.Activity;
 import android.app.admin.DevicePolicyManager;
@@ -61,14 +62,18 @@
         mActivity = activity;
     }
 
-    private @UserIdInt int getEnforcementAdminUserId() {
-        if (mEnforcedAdmin.user == null) {
+    private @UserIdInt int getEnforcementAdminUserId(@NonNull EnforcedAdmin admin) {
+        if (admin.user == null) {
             return UserHandle.USER_NULL;
         } else {
-            return mEnforcedAdmin.user.getIdentifier();
+            return admin.user.getIdentifier();
         }
     }
 
+    private @UserIdInt int getEnforcementAdminUserId() {
+        return getEnforcementAdminUserId(mEnforcedAdmin);
+    }
+
     public AlertDialog.Builder prepareDialogBuilder(String restriction,
             EnforcedAdmin enforcedAdmin) {
         mEnforcedAdmin = enforcedAdmin;
@@ -170,18 +175,11 @@
             return;
         }
 
-        final int userId;
-        if (enforcedAdmin.user == null) {
-            userId = UserHandle.USER_NULL;
-        } else {
-            userId = enforcedAdmin.user.getIdentifier();
-        }
-
         final DevicePolicyManager dpm = (DevicePolicyManager) activity.getSystemService(
                 Context.DEVICE_POLICY_SERVICE);
         if (!RestrictedLockUtilsInternal.isAdminInCurrentUserOrProfile(activity,
                 enforcedAdmin.component) || !RestrictedLockUtils.isCurrentUserOrProfile(
-                activity, userId)) {
+                activity, getEnforcementAdminUserId(enforcedAdmin))) {
             enforcedAdmin.component = null;
         } else {
             if (enforcedAdmin.user == null) {
@@ -189,7 +187,8 @@
             }
             CharSequence supportMessage = null;
             if (UserHandle.isSameApp(Process.myUid(), Process.SYSTEM_UID)) {
-                supportMessage = dpm.getShortSupportMessageForUser(enforcedAdmin.component, userId);
+                supportMessage = dpm.getShortSupportMessageForUser(enforcedAdmin.component,
+                        getEnforcementAdminUserId(enforcedAdmin));
             }
             if (supportMessage != null) {
                 final TextView textView = root.findViewById(R.id.admin_support_msg);
diff --git a/src/com/android/settings/webview/WebViewAppPicker.java b/src/com/android/settings/webview/WebViewAppPicker.java
index b96217e..72d7918 100644
--- a/src/com/android/settings/webview/WebViewAppPicker.java
+++ b/src/com/android/settings/webview/WebViewAppPicker.java
@@ -118,9 +118,9 @@
     }
 
     private static class WebViewAppInfo extends DefaultAppInfo {
-        public WebViewAppInfo(Context context, PackageManager pm,
+        public WebViewAppInfo(Context context, PackageManager pm, int userId,
                 PackageItemInfo packageItemInfo, String summary, boolean enabled) {
-            super(context, pm, packageItemInfo, summary, enabled);
+            super(context, pm, userId, packageItemInfo, summary, enabled);
         }
 
         @Override
@@ -138,7 +138,7 @@
     @VisibleForTesting
     DefaultAppInfo createDefaultAppInfo(Context context, PackageManager pm,
             PackageItemInfo packageItemInfo, String disabledReason) {
-        return new WebViewAppInfo(context, pm, packageItemInfo, disabledReason,
+        return new WebViewAppInfo(context, pm, mUserId, packageItemInfo, disabledReason,
                 TextUtils.isEmpty(disabledReason) /* enabled */);
     }
 
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceControllerV2Test.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceControllerV2Test.java
index 5e9179f..708222e 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceControllerV2Test.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceControllerV2Test.java
@@ -43,12 +43,11 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.Mock;import android.net.INetworkStatsSession;
+import org.mockito.Mock;
 import android.util.FeatureFlagUtils;
 
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RuntimeEnvironment;
-import org.robolectric.util.ReflectionHelpers;
 
 import androidx.loader.app.LoaderManager;
 import androidx.preference.Preference;
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceControllerTest.java
index f6abb5b..f4571ce 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/DefaultBrowserShortcutPreferenceControllerTest.java
@@ -18,8 +18,8 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.argThat;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
@@ -66,8 +66,8 @@
     public void hasAppCapability_hasBrowserCapability_shouldReturnTrue() {
         List<ResolveInfo> resolveInfos = new ArrayList<>();
         resolveInfos.add(new ResolveInfo());
-        when(mPackageManager.queryIntentActivities(argThat(intent-> intent != null
-                && intent.getCategories().contains(Intent.CATEGORY_BROWSABLE)), anyInt()))
+        when(mPackageManager.queryIntentActivitiesAsUser(argThat(intent-> intent != null
+                && intent.getCategories().contains(Intent.CATEGORY_BROWSABLE)), anyInt(), anyInt()))
                 .thenReturn(resolveInfos);
 
         assertThat(mController.hasAppCapability()).isTrue();
diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java
index 4a482d0..cd3a426 100644
--- a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultBrowserPreferenceControllerTest.java
@@ -34,6 +34,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
 import android.os.UserManager;
 
 import androidx.preference.Preference;
@@ -131,6 +132,16 @@
     }
 
     @Test
+    public void getDefaultApp_shouldGetApplicationInfoAsUser() throws NameNotFoundException {
+        final String PACKAGE_NAME = "com.test.package";
+        when(mPackageManager.getDefaultBrowserPackageNameAsUser(anyInt())).thenReturn(PACKAGE_NAME);
+
+        mController.getDefaultAppInfo();
+
+        verify(mPackageManager).getApplicationInfoAsUser(eq(PACKAGE_NAME), anyInt(), anyInt());
+    }
+
+    @Test
     public void isBrowserDefault_onlyApp_shouldReturnTrue() {
         when(mPackageManager.getDefaultBrowserPackageNameAsUser(anyInt())).thenReturn(null);
         final List<ResolveInfo> resolveInfos = new ArrayList<>();
@@ -173,6 +184,33 @@
             any(Intent.class), eq(0) /* flags */, eq(0) /* userId */);
     }
 
+    @Test
+    public void getOnlyAppIcon_shouldGetApplicationInfoAsUser() throws NameNotFoundException {
+        final List<ResolveInfo> resolveInfos = new ArrayList<>();
+        final String PACKAGE_NAME = "com.test.package";
+        resolveInfos.add(createResolveInfo(PACKAGE_NAME));
+        when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt()))
+            .thenReturn(resolveInfos);
+        when(mContext.getPackageManager()).thenReturn(mPackageManager);
+        when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
+        when(mContext.getResources()).thenReturn(mock(Resources.class));
+
+        mController.getOnlyAppIcon();
+
+        verify(mPackageManager).getApplicationInfoAsUser(
+            eq(PACKAGE_NAME), eq(0) /* flags */, eq(0) /* userId */);
+    }
+
+    @Test
+    public void hasBrowserPreference_shouldQueryIntentActivitiesAsUser() {
+        when(mContext.getPackageManager()).thenReturn(mPackageManager);
+
+        mController.hasBrowserPreference("com.test.package", mContext, 0 /* userId */);
+
+        verify(mPackageManager).queryIntentActivitiesAsUser(
+            any(Intent.class), eq(0) /* flags */, eq(0) /* userId */);
+    }
+
     private ResolveInfo createResolveInfo(String packageName) {
         final ResolveInfo info = new ResolveInfo();
         info.handleAllWebDataURI = true;
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
index 3266a7f..bb691cb 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
@@ -89,6 +89,16 @@
     }
 
     @Implementation
+    public List<UserHandle> getUserProfiles(){
+        int[] userIds = getProfileIds(UserHandle.myUserId(), true /* enabledOnly */);
+        List<UserHandle> result = new ArrayList<>(userIds.length);
+        for (int userId : userIds) {
+            result.add(UserHandle.of(userId));
+        }
+        return result;
+    }
+
+    @Implementation
     public int getCredentialOwnerProfile(@UserIdInt int userHandle) {
         return userHandle;
     }