Loading packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstance.java +1 −1 Original line number Diff line number Diff line Loading @@ -230,7 +230,7 @@ public class PluginInstance<T extends Plugin> implements PluginLifecycleManager private ClassLoader getParentClassLoader(ClassLoader baseClassLoader) { return new PluginManagerImpl.ClassLoaderFilter( baseClassLoader, "com.android.systemui.plugin"); baseClassLoader, "com.android.systemui.log", "com.android.systemui.plugin"); } /** Returns class loader specific for the given plugin. */ Loading packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java +9 −5 Original line number Diff line number Diff line Loading @@ -248,21 +248,25 @@ public class PluginManagerImpl extends BroadcastReceiver implements PluginManage // This allows plugins to include any libraries or copied code they want by only including // classes from the plugin library. static class ClassLoaderFilter extends ClassLoader { private final String mPackage; private final String[] mPackages; private final ClassLoader mBase; public ClassLoaderFilter(ClassLoader base, String pkg) { ClassLoaderFilter(ClassLoader base, String... pkgs) { super(ClassLoader.getSystemClassLoader()); mBase = base; mPackage = pkg; mPackages = pkgs; } @Override protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { if (!name.startsWith(mPackage)) super.loadClass(name, resolve); for (String pkg : mPackages) { if (name.startsWith(pkg)) { return mBase.loadClass(name); } } return super.loadClass(name, resolve); } } private class PluginExceptionHandler implements UncaughtExceptionHandler { Loading Loading
packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstance.java +1 −1 Original line number Diff line number Diff line Loading @@ -230,7 +230,7 @@ public class PluginInstance<T extends Plugin> implements PluginLifecycleManager private ClassLoader getParentClassLoader(ClassLoader baseClassLoader) { return new PluginManagerImpl.ClassLoaderFilter( baseClassLoader, "com.android.systemui.plugin"); baseClassLoader, "com.android.systemui.log", "com.android.systemui.plugin"); } /** Returns class loader specific for the given plugin. */ Loading
packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java +9 −5 Original line number Diff line number Diff line Loading @@ -248,21 +248,25 @@ public class PluginManagerImpl extends BroadcastReceiver implements PluginManage // This allows plugins to include any libraries or copied code they want by only including // classes from the plugin library. static class ClassLoaderFilter extends ClassLoader { private final String mPackage; private final String[] mPackages; private final ClassLoader mBase; public ClassLoaderFilter(ClassLoader base, String pkg) { ClassLoaderFilter(ClassLoader base, String... pkgs) { super(ClassLoader.getSystemClassLoader()); mBase = base; mPackage = pkg; mPackages = pkgs; } @Override protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { if (!name.startsWith(mPackage)) super.loadClass(name, resolve); for (String pkg : mPackages) { if (name.startsWith(pkg)) { return mBase.loadClass(name); } } return super.loadClass(name, resolve); } } private class PluginExceptionHandler implements UncaughtExceptionHandler { Loading