diff options
| author | 2023-04-28 18:00:49 +0000 | |
|---|---|---|
| committer | 2023-04-28 18:00:49 +0000 | |
| commit | 2aa4ac328942d058dd7d7764fd330f0ba2c6864e (patch) | |
| tree | 760630bf18de13c9bb9400916571d32cae1c38b9 | |
| parent | c43ed5234656d4a0986a6e326ca21289e353847c (diff) | |
| parent | 33b5bb3d66cbc9c761e119ed6c6833fe32d18bde (diff) | |
Merge "Support additional dynamically linked library in plugins" into udc-dev
| -rw-r--r-- | packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstance.java | 2 | ||||
| -rw-r--r-- | packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java | 14 |
2 files changed, 10 insertions, 6 deletions
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstance.java b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstance.java index 016d573930e8..4a665621b3fe 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstance.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstance.java @@ -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. */ diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java index 2f9f5b2ac938..1e668b84cdc6 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginManagerImpl.java @@ -248,19 +248,23 @@ 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); - return mBase.loadClass(name); + for (String pkg : mPackages) { + if (name.startsWith(pkg)) { + return mBase.loadClass(name); + } + } + return super.loadClass(name, resolve); } } |