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:
1 parent
dca74bcb24
commit
9cd3154952
8 files changed
+49
-39
No files matched your search
+10
-6
@@ -27,6 +27,8 @@ import android.content.Intent;
|
||||
import android.content.pm.ResolveInfo;
|
||||
|
||||
import com.android.launcher3.BuildConfig;
|
||||
import com.android.launcher3.dagger.ApplicationContext;
|
||||
import com.android.launcher3.dagger.LauncherAppSingleton;
|
||||
import com.android.launcher3.util.PluginManagerWrapper;
|
||||
import com.android.systemui.plugins.Plugin;
|
||||
import com.android.systemui.plugins.PluginListener;
|
||||
@@ -34,7 +36,6 @@ import com.android.systemui.shared.plugins.PluginActionManager;
|
||||
import com.android.systemui.shared.plugins.PluginInstance;
|
||||
import com.android.systemui.shared.plugins.PluginManagerImpl;
|
||||
import com.android.systemui.shared.plugins.PluginPrefs;
|
||||
import com.android.systemui.shared.system.UncaughtExceptionPreHandlerManager;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
@@ -42,16 +43,17 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class PluginManagerWrapperImpl extends PluginManagerWrapper {
|
||||
import javax.inject.Inject;
|
||||
|
||||
private static final UncaughtExceptionPreHandlerManager UNCAUGHT_EXCEPTION_PRE_HANDLER_MANAGER =
|
||||
new UncaughtExceptionPreHandlerManager();
|
||||
@LauncherAppSingleton
|
||||
public class PluginManagerWrapperImpl extends PluginManagerWrapper {
|
||||
|
||||
private final Context mContext;
|
||||
private final PluginManagerImpl mPluginManager;
|
||||
private final PluginEnablerImpl mPluginEnabler;
|
||||
|
||||
public PluginManagerWrapperImpl(Context c) {
|
||||
@Inject
|
||||
public PluginManagerWrapperImpl(@ApplicationContext Context c) {
|
||||
mContext = c;
|
||||
mPluginEnabler = new PluginEnablerImpl(c);
|
||||
List<String> privilegedPlugins = Collections.emptyList();
|
||||
@@ -64,9 +66,11 @@ public class PluginManagerWrapperImpl extends PluginManagerWrapper {
|
||||
c.getSystemService(NotificationManager.class), mPluginEnabler,
|
||||
privilegedPlugins, instanceFactory);
|
||||
|
||||
// Use null preHandlerManager, as the handler is never unregistered which can cause leaks
|
||||
// when using multiple dagger graphs.
|
||||
mPluginManager = new PluginManagerImpl(c, instanceManagerFactory,
|
||||
BuildConfig.IS_DEBUG_DEVICE,
|
||||
UNCAUGHT_EXCEPTION_PRE_HANDLER_MANAGER, mPluginEnabler,
|
||||
null /* preHandlerManager */, mPluginEnabler,
|
||||
new PluginPrefs(c), privilegedPlugins);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user