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

Commit 39a25935 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Fix plugin reloading" into oc-dev

parents 73f2a2a4 1642d7f2
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -30,13 +30,13 @@ import android.content.res.Resources;
import android.net.Uri;
import android.os.Build;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.SystemProperties;
import android.os.UserHandle;
import android.text.TextUtils;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.widget.Toast;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
@@ -166,8 +166,10 @@ public class PluginManagerImpl extends BroadcastReceiver implements PluginManage
        }
        if (!mPluginMap.containsKey(listener)) return;
        mPluginMap.remove(listener).destroy();
        if (mPluginMap.size() == 0) {
            stopListening();
        }
    }

    private void startListening() {
        if (mListening) return;
@@ -237,7 +239,9 @@ public class PluginManagerImpl extends BroadcastReceiver implements PluginManage
                mContext.getSystemService(NotificationManager.class).notifyAsUser(pkg,
                        SystemMessage.NOTE_PLUGIN, nb.build(), UserHandle.ALL);
            }
            clearClassLoader(pkg);
            if (clearClassLoader(pkg)) {
                Toast.makeText(mContext, "Reloading " + pkg, Toast.LENGTH_LONG).show();
            }
            if (!Intent.ACTION_PACKAGE_REMOVED.equals(intent.getAction())) {
                for (PluginInstanceManager manager : mPluginMap.values()) {
                    manager.onPackageChange(pkg);
@@ -259,8 +263,8 @@ public class PluginManagerImpl extends BroadcastReceiver implements PluginManage
        return classLoader;
    }

    private void clearClassLoader(String pkg) {
        mClassLoaders.remove(pkg);
    private boolean clearClassLoader(String pkg) {
        return mClassLoaders.remove(pkg) != null;
    }

    ClassLoader getParentClassLoader() {