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

Commit bdb40056 authored by arangelov's avatar arangelov Committed by Antoan Angelov
Browse files

Create a PackageMonitor instance for each profile.

Bug: 142537267
Bug: 142538125
Test: atest com.android.internal.app.ChooserActivityTest
Test: atest com.android.internal.app.ResolverActivityTest

Change-Id: I7cad6529c168422f68a1366d5c6281af605ca230
parent 8a269993
Loading
Loading
Loading
Loading
+26 −8
Original line number Diff line number Diff line
@@ -157,7 +157,8 @@ public class ResolverActivity extends Activity implements
    private static final String TAB_TAG_PERSONAL = "personal";
    private static final String TAB_TAG_WORK = "work";

    private final PackageMonitor mPackageMonitor = createPackageMonitor();
    private final PackageMonitor mPersonalPackageMonitor = createPackageMonitor();
    private PackageMonitor mWorkPackageMonitor;

    @VisibleForTesting
    protected AbstractMultiProfilePagerAdapter mMultiProfilePagerAdapter;
@@ -327,7 +328,13 @@ public class ResolverActivity extends Activity implements

        mPm = getPackageManager();

        mPackageMonitor.register(this, getMainLooper(), false);
        mPersonalPackageMonitor.register(
                this, getMainLooper(), getPersonalProfileUserHandle(), false);
        if (hasWorkProfile()) {
            mWorkPackageMonitor = createPackageMonitor();
            mWorkPackageMonitor.register(this, getMainLooper(), getWorkProfileUserHandle(), false);
        }

        mRegistered = true;
        mReferrerPackage = getReferrerPackageName();

@@ -543,9 +550,6 @@ public class ResolverActivity extends Activity implements
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        mMultiProfilePagerAdapter.getActiveListAdapter().handlePackagesChanged();
        if (mMultiProfilePagerAdapter.getInactiveListAdapter() != null) {
            mMultiProfilePagerAdapter.getInactiveListAdapter().handlePackagesChanged();
        }

        if (mSystemWindowInsets != null) {
            mResolverDrawerLayout.setPadding(mSystemWindowInsets.left, mSystemWindowInsets.top,
@@ -707,7 +711,15 @@ public class ResolverActivity extends Activity implements
    protected void onRestart() {
        super.onRestart();
        if (!mRegistered) {
            mPackageMonitor.register(this, getMainLooper(), false);
            mPersonalPackageMonitor.register(this, getMainLooper(),
                    getPersonalProfileUserHandle(), false);
            if (hasWorkProfile()) {
                if (mWorkPackageMonitor == null) {
                    mWorkPackageMonitor = createPackageMonitor();
                }
                mWorkPackageMonitor.register(this, getMainLooper(),
                        getWorkProfileUserHandle(), false);
            }
            mRegistered = true;
        }
        mMultiProfilePagerAdapter.getActiveListAdapter().handlePackagesChanged();
@@ -718,7 +730,10 @@ public class ResolverActivity extends Activity implements
    protected void onStop() {
        super.onStop();
        if (mRegistered) {
            mPackageMonitor.unregister();
            mPersonalPackageMonitor.unregister();
            if (mWorkPackageMonitor != null) {
                mWorkPackageMonitor.unregister();
            }
            mRegistered = false;
        }
        final Intent intent = getIntent();
@@ -1287,7 +1302,10 @@ public class ResolverActivity extends Activity implements
                        .targetInfoForPosition(0, false);
                if (shouldAutoLaunchSingleChoice(target)) {
                    safelyStartActivity(target);
                    mPackageMonitor.unregister();
                    mPersonalPackageMonitor.unregister();
                    if (mWorkPackageMonitor != null) {
                        mWorkPackageMonitor.unregister();
                    }
                    mRegistered = false;
                    finish();
                    return true;