From 4ca00016c5a5506d2955d033207998b7a21cdd0d Mon Sep 17 00:00:00 2001 From: Fabian Kozynski Date: Tue, 1 Oct 2019 16:45:10 -0400 Subject: [PATCH] Use an external GlobalActionsPanelPlugin if available If there is any plugin that implements GlobalActionsPanelPlugin with package name as defined in the config, SystemUI will use that instead of the wallet plugin. Test: manual Change-Id: I63db81287ef40f085d5b542fe01eff29adeb1477 --- packages/SystemUI/res/values/config.xml | 3 ++ .../globalactions/GlobalActionsImpl.java | 29 +++++++++++++++++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index efcc2c44ba942..41c34361cf703 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -483,4 +483,7 @@ false + + com.android.systemui.controls.panel + diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java index b9fe827bb1c95..6178a16bd22fd 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java @@ -37,12 +37,15 @@ import com.android.systemui.SysUiServiceProvider; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.plugins.GlobalActions; import com.android.systemui.plugins.GlobalActionsPanelPlugin; +import com.android.systemui.plugins.PluginListener; +import com.android.systemui.shared.plugins.PluginManager; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.ExtensionController; import com.android.systemui.statusbar.policy.KeyguardStateController; -public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks { +public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks, + PluginListener { private static final float SHUTDOWN_SCRIM_ALPHA = 0.95f; @@ -50,23 +53,33 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks private final KeyguardStateController mKeyguardStateController; private final DeviceProvisionedController mDeviceProvisionedController; private final ExtensionController.Extension mPanelExtension; + private GlobalActionsPanelPlugin mPlugin; private GlobalActionsDialog mGlobalActions; private boolean mDisabled; + private final PluginManager mPluginManager; + private final String mPluginPackageName; public GlobalActionsImpl(Context context) { mContext = context; mKeyguardStateController = Dependency.get(KeyguardStateController.class); mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class); + mPluginManager = Dependency.get(PluginManager.class); SysUiServiceProvider.getComponent(context, CommandQueue.class).addCallback(this); mPanelExtension = Dependency.get(ExtensionController.class) .newExtension(GlobalActionsPanelPlugin.class) .withPlugin(GlobalActionsPanelPlugin.class) .build(); + mPluginPackageName = mContext.getString( + com.android.systemui.R.string.config_controlsPluginPackageName); + mPluginManager.addPluginListener( + GlobalActionsPanelPlugin.ACTION, this, GlobalActionsPanelPlugin.class, true); } @Override public void destroy() { SysUiServiceProvider.getComponent(mContext, CommandQueue.class).removeCallback(this); + mPluginManager.removePluginListener(this); + if (mPlugin != null) mPlugin.onDestroy(); if (mGlobalActions != null) { mGlobalActions.destroy(); mGlobalActions = null; @@ -81,7 +94,7 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks } mGlobalActions.showDialog(mKeyguardStateController.isShowing(), mDeviceProvisionedController.isDeviceProvisioned(), - mPanelExtension.get()); + mPlugin != null ? mPlugin : mPanelExtension.get()); Dependency.get(KeyguardUpdateMonitor.class).requestFaceAuth(); } @@ -144,4 +157,16 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks mGlobalActions.dismissDialog(); } } + + @Override + public void onPluginConnected(GlobalActionsPanelPlugin plugin, Context pluginContext) { + if (pluginContext.getPackageName().equals(mPluginPackageName)) { + mPlugin = plugin; + } + } + + @Override + public void onPluginDisconnected(GlobalActionsPanelPlugin plugin) { + mPlugin = null; + } }