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

Commit ad946733 authored by Philip P. Moltmann's avatar Philip P. Moltmann Committed by Automerger Merge Worker
Browse files

Merge "fix broadcast receivers overflow for system_server" am: 9ba1a0d5

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1339995

Change-Id: I21973fa539299a967dc78161a57fa467a99912c3
parents 12d3218e 9ba1a0d5
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -64,12 +64,13 @@ class MtpNotificationManager {

    private final Context mContext;
    private final OnOpenInAppListener mListener;
    private final Receiver mReceiver;

    MtpNotificationManager(Context context, OnOpenInAppListener listener) {
        mContext = context;
        mListener = listener;
        final Receiver receiver = new Receiver();
        context.registerReceiver(receiver, new IntentFilter(ACTION_OPEN_IN_APPS));
        mReceiver = new Receiver();
        context.registerReceiver(mReceiver, new IntentFilter(ACTION_OPEN_IN_APPS));
    }

    void showNotification(UsbDevice device) {
@@ -154,4 +155,8 @@ class MtpNotificationManager {
    static interface OnOpenInAppListener {
        void onOpenInApp(UsbDevice device);
    }

    public void unregister() {
        mContext.unregisterReceiver(mReceiver);
    }
}
+9 −0
Original line number Diff line number Diff line
@@ -260,6 +260,15 @@ class UsbProfileGroupSettingsManager {
        mUsbHandlerManager = usbResolveActivityManager;
    }

    /**
     * Unregister all broadcast receivers. Must be called explicitly before
     * object deletion.
     */
    public void unregisterReceivers() {
        mPackageMonitor.unregister();
        mMtpNotificationManager.unregister();
    }

    /**
     * Remove all defaults and denied packages for a user.
     *
+1 −0
Original line number Diff line number Diff line
@@ -124,6 +124,7 @@ class UsbSettingsManager {
            if (mSettingsByProfileGroup.indexOfKey(userToRemove.getIdentifier()) >= 0) {
                // The user to remove is the parent user of the group. The parent is the last user
                // that gets removed. All state will be removed with the user
                mSettingsByProfileGroup.get(userToRemove.getIdentifier()).unregisterReceivers();
                mSettingsByProfileGroup.remove(userToRemove.getIdentifier());
            } else {
                // We cannot find the parent user of the user that is removed, hence try to remove