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;
}