Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c82baecc authored by Torne (Richard Coles)'s avatar Torne (Richard Coles)
Browse files

Update use of android.webkit.UserPackage.

UserPackage no longer stores a UserInfo, only a UserHandle, to aid in
mainline modularization. Update Settings to fetch the UserInfo itself
when it needs to show the user name.

Bug: 310653407
Test: atest WebViewAppPickerTest
Flag: NONE cannot flag changed types in method signatures
Change-Id: I0e6f58e6b6a353171ddf923279ff08a92e2f040a
parent 7db5b7a0
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -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;
+19 −17
Original line number Diff line number Diff line
@@ -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);
    }