Moving PluginManager to dagger

Multiple singletons depend on Plugin which can cause deadlock
if PluginManager is initialized on main thread

Test: presubmit
Bug: 361850561
Bug: 373557167
Flag: EXEMPT dagger
Change-Id: I79f17ac6b78a2ce60df2d27a6e794b9e4eba1b51
This commit is contained in:
Sunny Goyal
2024-10-17 11:47:07 -07:00
parent dca74bcb24
commit 9cd3154952
8 changed files with 49 additions and 39 deletions
@@ -15,32 +15,39 @@
*/
package com.android.launcher3.util;
import static com.android.launcher3.util.MainThreadInitializedObject.forOverride;
import androidx.annotation.AnyThread;
import com.android.launcher3.R;
import com.android.launcher3.dagger.LauncherAppSingleton;
import com.android.launcher3.dagger.LauncherBaseAppComponent;
import com.android.systemui.plugins.Plugin;
import com.android.systemui.plugins.PluginListener;
import java.io.PrintWriter;
public class PluginManagerWrapper implements ResourceBasedOverride, SafeCloseable {
import javax.inject.Inject;
public static final MainThreadInitializedObject<PluginManagerWrapper> INSTANCE =
forOverride(PluginManagerWrapper.class, R.string.plugin_manager_wrapper_class);
@LauncherAppSingleton
public class PluginManagerWrapper{
public static final DaggerSingletonObject<PluginManagerWrapper> INSTANCE =
new DaggerSingletonObject<>(LauncherBaseAppComponent::getPluginManagerWrapper);
@Inject
public PluginManagerWrapper() { }
@AnyThread
public <T extends Plugin> void addPluginListener(
PluginListener<T> listener, Class<T> pluginClass) {
addPluginListener(listener, pluginClass, false);
}
@AnyThread
public <T extends Plugin> void addPluginListener(
PluginListener<T> listener, Class<T> pluginClass, boolean allowMultiple) {
}
@AnyThread
public void removePluginListener(PluginListener<? extends Plugin> listener) { }
@Override
public void close() { }
public void dump(PrintWriter pw) { }
}