diff --git a/src/com/android/settings/webview/WebViewAppPicker.java b/src/com/android/settings/webview/WebViewAppPicker.java index b1dfd1454f9..7fb5ebca8ce 100644 --- a/src/com/android/settings/webview/WebViewAppPicker.java +++ b/src/com/android/settings/webview/WebViewAppPicker.java @@ -26,6 +26,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageItemInfo; import android.content.pm.PackageManager; +import android.os.UserManager; import android.text.TextUtils; import android.webkit.UserPackage; @@ -149,17 +150,20 @@ public class WebViewAppPicker extends DefaultAppPickerFragment { @VisibleForTesting String getDisabledReason(WebViewUpdateServiceWrapper webviewUpdateServiceWrapper, Context context, String packageName) { + UserManager userManager = context.getSystemService(UserManager.class); List userPackages = webviewUpdateServiceWrapper.getPackageInfosAllUsers(context, packageName); for (UserPackage userPackage : userPackages) { if (!userPackage.isInstalledPackage()) { // Package uninstalled/hidden return context.getString( - R.string.webview_uninstalled_for_user, userPackage.getUserInfo().name); + R.string.webview_uninstalled_for_user, + userManager.getUserInfo(userPackage.getUser().getIdentifier()).name); } else if (!userPackage.isEnabledPackage()) { // Package disabled return context.getString( - R.string.webview_disabled_for_user, userPackage.getUserInfo().name); + R.string.webview_disabled_for_user, + userManager.getUserInfo(userPackage.getUser().getIdentifier()).name); } } return null; diff --git a/tests/robotests/src/com/android/settings/webview/WebViewAppPickerTest.java b/tests/robotests/src/com/android/settings/webview/WebViewAppPickerTest.java index d35b608d761..9b5f4520520 100644 --- a/tests/robotests/src/com/android/settings/webview/WebViewAppPickerTest.java +++ b/tests/robotests/src/com/android/settings/webview/WebViewAppPickerTest.java @@ -35,8 +35,8 @@ import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; -import android.content.pm.UserInfo; import android.graphics.drawable.ColorDrawable; +import android.os.UserHandle; import android.webkit.UserPackage; import androidx.fragment.app.FragmentActivity; @@ -71,15 +71,17 @@ import java.util.Collections; }) public class WebViewAppPickerTest { - private final static String PACKAGE_NAME = "com.example.test"; - private final static String PACKAGE_VERSION = "1.0.0"; + private static final String PACKAGE_NAME = "com.example.test"; + private static final String PACKAGE_VERSION = "1.0.0"; + private static final String FIRST_USER_NAME = "FIRST_USER"; + private static final String SECOND_USER_NAME = "SECOND_USER"; @Mock private FragmentActivity mActivity; private Context mContext; - private UserInfo mFirstUser; - private UserInfo mSecondUser; + private UserHandle mFirstUser; + private UserHandle mSecondUser; private ShadowPackageManager mPackageManager; private WebViewAppPicker mPicker; private WebViewUpdateServiceWrapper mWvusWrapper; @@ -105,8 +107,8 @@ public class WebViewAppPickerTest { mPackageManager.addPackage(packageInfo); mPackageManager.setUnbadgedApplicationIcon(PACKAGE_NAME, new ColorDrawable()); - mFirstUser = new UserInfo(0, "FIRST_USER", 0); - mSecondUser = new UserInfo(0, "SECOND_USER", 0); + mFirstUser = mUserManager.addUser(0, FIRST_USER_NAME, 0); + mSecondUser = mUserManager.addUser(1, SECOND_USER_NAME, 0); mPicker = new WebViewAppPicker(); mPicker = spy(mPicker); doNothing().when(mPicker).updateCandidates(); @@ -238,13 +240,13 @@ public class WebViewAppPickerTest { UserPackage packageForFirstUser = mock(UserPackage.class); when(packageForFirstUser.isEnabledPackage()).thenReturn(false); when(packageForFirstUser.isInstalledPackage()).thenReturn(true); - when(packageForFirstUser.getUserInfo()).thenReturn(mFirstUser); + when(packageForFirstUser.getUser()).thenReturn(mFirstUser); WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class); when(wvusWrapper.getPackageInfosAllUsers(any(), eq(PACKAGE_NAME))) .thenReturn(Collections.singletonList(packageForFirstUser)); - final String expectedReason = String.format("(disabled for user %s)", mFirstUser.name); + final String expectedReason = String.format("(disabled for user %s)", FIRST_USER_NAME); assertThat(mPicker.getDisabledReason(wvusWrapper, mContext, PACKAGE_NAME)) .isEqualTo(expectedReason); } @@ -254,13 +256,13 @@ public class WebViewAppPickerTest { UserPackage packageForFirstUser = mock(UserPackage.class); when(packageForFirstUser.isEnabledPackage()).thenReturn(true); when(packageForFirstUser.isInstalledPackage()).thenReturn(false); - when(packageForFirstUser.getUserInfo()).thenReturn(mFirstUser); + when(packageForFirstUser.getUser()).thenReturn(mFirstUser); WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class); when(wvusWrapper.getPackageInfosAllUsers(any(), eq(PACKAGE_NAME))) .thenReturn(Collections.singletonList(packageForFirstUser)); - final String expectedReason = String.format("(uninstalled for user %s)", mFirstUser.name); + final String expectedReason = String.format("(uninstalled for user %s)", FIRST_USER_NAME); assertThat(mPicker.getDisabledReason(wvusWrapper, mContext, PACKAGE_NAME)) .isEqualTo(expectedReason); } @@ -270,18 +272,18 @@ public class WebViewAppPickerTest { UserPackage packageForFirstUser = mock(UserPackage.class); when(packageForFirstUser.isEnabledPackage()).thenReturn(false); when(packageForFirstUser.isInstalledPackage()).thenReturn(true); - when(packageForFirstUser.getUserInfo()).thenReturn(mFirstUser); + when(packageForFirstUser.getUser()).thenReturn(mFirstUser); UserPackage packageForSecondUser = mock(UserPackage.class); when(packageForSecondUser.isEnabledPackage()).thenReturn(true); when(packageForSecondUser.isInstalledPackage()).thenReturn(false); - when(packageForSecondUser.getUserInfo()).thenReturn(mSecondUser); + when(packageForSecondUser.getUser()).thenReturn(mSecondUser); WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class); when(wvusWrapper.getPackageInfosAllUsers(any(), eq(PACKAGE_NAME))) .thenReturn(Arrays.asList(packageForFirstUser, packageForSecondUser)); - final String expectedReason = String.format("(disabled for user %s)", mFirstUser.name); + final String expectedReason = String.format("(disabled for user %s)", FIRST_USER_NAME); assertThat(mPicker.getDisabledReason(wvusWrapper, mContext, PACKAGE_NAME)) .isEqualTo(expectedReason); } @@ -295,18 +297,18 @@ public class WebViewAppPickerTest { UserPackage packageForFirstUser = mock(UserPackage.class); when(packageForFirstUser.isEnabledPackage()).thenReturn(false); when(packageForFirstUser.isInstalledPackage()).thenReturn(false); - when(packageForFirstUser.getUserInfo()).thenReturn(mFirstUser); + when(packageForFirstUser.getUser()).thenReturn(mFirstUser); UserPackage packageForSecondUser = mock(UserPackage.class); when(packageForSecondUser.isEnabledPackage()).thenReturn(true); when(packageForSecondUser.isInstalledPackage()).thenReturn(true); - when(packageForSecondUser.getUserInfo()).thenReturn(mSecondUser); + when(packageForSecondUser.getUser()).thenReturn(mSecondUser); WebViewUpdateServiceWrapper wvusWrapper = mock(WebViewUpdateServiceWrapper.class); when(wvusWrapper.getPackageInfosAllUsers(any(), eq(PACKAGE_NAME))) .thenReturn(Arrays.asList(packageForFirstUser, packageForSecondUser)); - final String expectedReason = String.format("(uninstalled for user %s)", mFirstUser.name); + final String expectedReason = String.format("(uninstalled for user %s)", FIRST_USER_NAME); assertThat(mPicker.getDisabledReason(wvusWrapper, mContext, PACKAGE_NAME)) .isEqualTo(expectedReason); }