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

Commit b87f42b1 authored by Songchun Fan's avatar Songchun Fan
Browse files

[PackageMonitor] provide more callbacks with intent extras

Add a few more callbacks that contains the intent extras, as some
callers need to extract info from them.

BUG: 335704775
Test: atest PackageMonitorTest

Change-Id: I7012b4d8b08564e6f920ede61f7e63a47751db45
parent ee27adfc
Loading
Loading
Loading
Loading
+50 −0
Original line number Diff line number Diff line
@@ -146,6 +146,13 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
    public void onPackageAdded(String packageName, int uid) {
    }

    /**
     * Same as {@link #onPackageAdded(String, int)}, but this callback
     * has extras passed in.
     */
    public void onPackageAddedWithExtras(String packageName, int uid, Bundle extras) {
    }

    /**
     * Called when a package is really removed (and not replaced).
     */
@@ -153,6 +160,13 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
    public void onPackageRemoved(String packageName, int uid) {
    }

    /**
     * Same as {@link #onPackageRemoved(String, int)}, but this callback
     * has extras passed in.
     */
    public void onPackageRemovedWithExtras(String packageName, int uid, Bundle extras) {
    }

    /**
     * Called when a package is really removed (and not replaced) for
     * all users on the device.
@@ -160,12 +174,33 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
    public void onPackageRemovedAllUsers(String packageName, int uid) {
    }

    /**
     * Same as {@link #onPackageRemovedAllUsers(String, int)}, but this callback
     * has extras passed in.
     */
    public void onPackageRemovedAllUsersWithExtras(String packageName, int uid, Bundle extras) {
    }

    public void onPackageUpdateStarted(String packageName, int uid) {
    }

    /**
     * Same as {@link #onPackageUpdateStarted(String, int)}, but this callback
     * has extras passed in.
     */
    public void onPackageUpdateStartedWithExtras(String packageName, int uid, Bundle extras) {
    }

    public void onPackageUpdateFinished(String packageName, int uid) {
    }

    /**
     * Same as {@link #onPackageUpdateFinished(String, int)}, but this callback
     * has extras passed in.
     */
    public void onPackageUpdateFinishedWithExtras(String packageName, int uid, Bundle extras) {
    }

    /**
     * Direct reflection of {@link Intent#ACTION_PACKAGE_CHANGED
     * Intent.ACTION_PACKAGE_CHANGED} being received, informing you of
@@ -263,6 +298,13 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
    public void onPackageModified(@NonNull String packageName) {
    }

    /**
     * Same as {@link #onPackageModified(String)}, but this callback
     * has extras passed in.
     */
    public void onPackageModifiedWithExtras(@NonNull String packageName, Bundle extras) {
    }

    /**
     * Called when a package in the stopped state is started for some reason.
     *
@@ -406,10 +448,13 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
                    mModifiedPackages = mTempArray;
                    mChangeType = PACKAGE_UPDATING;
                    onPackageUpdateFinished(pkg, uid);
                    onPackageUpdateFinishedWithExtras(pkg, uid, intent.getExtras());
                    onPackageModified(pkg);
                    onPackageModifiedWithExtras(pkg, intent.getExtras());
                } else {
                    mChangeType = PACKAGE_PERMANENT_CHANGE;
                    onPackageAdded(pkg, uid);
                    onPackageAddedWithExtras(pkg, uid, intent.getExtras());
                }
                onPackageAppearedWithExtras(pkg, intent.getExtras());
                onPackageAppeared(pkg, mChangeType);
@@ -423,11 +468,13 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
                if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) {
                    mChangeType = PACKAGE_UPDATING;
                    onPackageUpdateStarted(pkg, uid);
                    onPackageUpdateStartedWithExtras(pkg, uid, intent.getExtras());
                    if (intent.getBooleanExtra(Intent.EXTRA_ARCHIVAL, false)) {
                        // In case it is a removal event due to archiving, we trigger package
                        // update event to refresh details like icons, title etc. corresponding to
                        // the archived app.
                        onPackageModified(pkg);
                        onPackageModifiedWithExtras(pkg, intent.getExtras());
                    }
                } else {
                    mChangeType = PACKAGE_PERMANENT_CHANGE;
@@ -436,8 +483,10 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
                    // it when it is re-added.
                    mSomePackagesChanged = true;
                    onPackageRemoved(pkg, uid);
                    onPackageRemovedWithExtras(pkg, uid, intent.getExtras());
                    if (intent.getBooleanExtra(Intent.EXTRA_REMOVED_FOR_ALL_USERS, false)) {
                        onPackageRemovedAllUsers(pkg, uid);
                        onPackageRemovedAllUsersWithExtras(pkg, uid, intent.getExtras());
                    }
                }
                onPackageDisappearedWithExtras(pkg, intent.getExtras());
@@ -457,6 +506,7 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver {
                }
                onPackageChangedWithExtras(pkg, intent.getExtras());
                onPackageModified(pkg);
                onPackageModifiedWithExtras(pkg, intent.getExtras());
            }
        } else if (Intent.ACTION_PACKAGE_DATA_CLEARED.equals(action)) {
            String pkg = getPackageName(intent);
+27 −5
Original line number Diff line number Diff line
@@ -307,8 +307,11 @@ public class PackageMonitorTest {
        verify(spyPackageMonitor, times(1)).onBeginPackageChanges();
        verify(spyPackageMonitor, times(1))
                .onPackageUpdateStarted(eq(FAKE_PACKAGE_NAME), eq(FAKE_PACKAGE_UID));

        ArgumentCaptor<Bundle> argumentCaptor = ArgumentCaptor.forClass(Bundle.class);
        verify(spyPackageMonitor, times(1))
                .onPackageUpdateStartedWithExtras(eq(FAKE_PACKAGE_NAME), eq(FAKE_PACKAGE_UID),
                        argumentCaptor.capture());

        verify(spyPackageMonitor, times(1)).onPackageDisappearedWithExtras(eq(FAKE_PACKAGE_NAME),
                argumentCaptor.capture());
        Bundle capturedExtras = argumentCaptor.getValue();
@@ -341,11 +344,16 @@ public class PackageMonitorTest {
        spyPackageMonitor.doHandlePackageEvent(intent);

        verify(spyPackageMonitor, times(1)).onBeginPackageChanges();
        ArgumentCaptor<Bundle> argumentCaptor = ArgumentCaptor.forClass(Bundle.class);
        verify(spyPackageMonitor, times(1))
                .onPackageUpdateStarted(eq(FAKE_PACKAGE_NAME), eq(FAKE_PACKAGE_UID));
        verify(spyPackageMonitor, times(1))
                .onPackageUpdateStartedWithExtras(eq(FAKE_PACKAGE_NAME), eq(FAKE_PACKAGE_UID),
                        argumentCaptor.capture());
        verify(spyPackageMonitor, times(1)).onPackageModified(eq(FAKE_PACKAGE_NAME));
        verify(spyPackageMonitor, times(1)).onPackageModifiedWithExtras(eq(FAKE_PACKAGE_NAME),
                argumentCaptor.capture());

        ArgumentCaptor<Bundle> argumentCaptor = ArgumentCaptor.forClass(Bundle.class);
        verify(spyPackageMonitor, times(1))
                .onPackageDisappearedWithExtras(eq(FAKE_PACKAGE_NAME), argumentCaptor.capture());
        Bundle capturedExtras = argumentCaptor.getValue();
@@ -378,12 +386,18 @@ public class PackageMonitorTest {
        spyPackageMonitor.doHandlePackageEvent(intent);

        verify(spyPackageMonitor, times(1)).onBeginPackageChanges();
        ArgumentCaptor<Bundle> argumentCaptor = ArgumentCaptor.forClass(Bundle.class);
        verify(spyPackageMonitor, times(1))
                .onPackageRemoved(eq(FAKE_PACKAGE_NAME), eq(FAKE_PACKAGE_UID));
        verify(spyPackageMonitor, times(1))
                .onPackageRemovedWithExtras(eq(FAKE_PACKAGE_NAME), eq(FAKE_PACKAGE_UID),
                        argumentCaptor.capture());
        verify(spyPackageMonitor, times(1))
                .onPackageRemovedAllUsers(eq(FAKE_PACKAGE_NAME), eq(FAKE_PACKAGE_UID));
        verify(spyPackageMonitor, times(1))
                .onPackageRemovedAllUsersWithExtras(eq(FAKE_PACKAGE_NAME), eq(FAKE_PACKAGE_UID),
                        argumentCaptor.capture());

        ArgumentCaptor<Bundle> argumentCaptor = ArgumentCaptor.forClass(Bundle.class);
        verify(spyPackageMonitor, times(1)).onPackageDisappearedWithExtras(eq(FAKE_PACKAGE_NAME),
                argumentCaptor.capture());
        Bundle capturedExtras = argumentCaptor.getValue();
@@ -415,11 +429,16 @@ public class PackageMonitorTest {
        spyPackageMonitor.doHandlePackageEvent(intent);

        verify(spyPackageMonitor, times(1)).onBeginPackageChanges();
        ArgumentCaptor<Bundle> argumentCaptor = ArgumentCaptor.forClass(Bundle.class);
        verify(spyPackageMonitor, times(1))
                .onPackageUpdateFinished(eq(FAKE_PACKAGE_NAME), eq(FAKE_PACKAGE_UID));
        verify(spyPackageMonitor, times(1))
                .onPackageModifiedWithExtras(eq(FAKE_PACKAGE_NAME), argumentCaptor.capture());
        verify(spyPackageMonitor, times(1)).onPackageModified(eq(FAKE_PACKAGE_NAME));
        verify(spyPackageMonitor, times(1))
                .onPackageModifiedWithExtras(eq(FAKE_PACKAGE_NAME), argumentCaptor.capture());


        ArgumentCaptor<Bundle> argumentCaptor = ArgumentCaptor.forClass(Bundle.class);
        verify(spyPackageMonitor, times(1)).onPackageAppearedWithExtras(eq(FAKE_PACKAGE_NAME),
                argumentCaptor.capture());
        Bundle capturedExtras = argumentCaptor.getValue();
@@ -451,8 +470,11 @@ public class PackageMonitorTest {
        verify(spyPackageMonitor, times(1)).onBeginPackageChanges();
        verify(spyPackageMonitor, times(1))
                .onPackageAdded(eq(FAKE_PACKAGE_NAME), eq(FAKE_PACKAGE_UID));

        ArgumentCaptor<Bundle> argumentCaptor = ArgumentCaptor.forClass(Bundle.class);
        verify(spyPackageMonitor, times(1))
                .onPackageAddedWithExtras(eq(FAKE_PACKAGE_NAME), eq(FAKE_PACKAGE_UID),
                        argumentCaptor.capture());

        verify(spyPackageMonitor, times(1)).onPackageAppearedWithExtras(eq(FAKE_PACKAGE_NAME),
                argumentCaptor.capture());
        Bundle capturedExtras = argumentCaptor.getValue();