Merge "Update use of android.webkit.UserPackage." into main

This commit is contained in:
Treehugger Robot
2024-09-10 14:09:29 +00:00
committed by Android (Google) Code Review
2 changed files with 25 additions and 19 deletions

View File

@@ -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<UserPackage> 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;

View File

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