Revert "5/N Remove PluginInitializer entirely."

Revert submission 15560568-b194781951-flags-8

Reason for revert: Broken build.
Reverted Changes:
Ie522ae3cc:5/N Remove PluginInitializer entirely.
Icaeaaee28:4/N Remove #handleWtfs from PluginInitializer.
I1c86c246c:3/N Remove #getPrivilegedPlugins from PluginInitia...
Id525f27e3:2/N Rename PluginInstanceManager to PluginActionMa...

Change-Id: I417dd4eddb0216e351a4eb1870a35f3ebc84045a
This commit is contained in:
Dave Mankoff
2021-09-09 21:17:24 +00:00
parent bfb3a7a831
commit 12d8e155ab
6 changed files with 80 additions and 25 deletions

View File

@@ -73,6 +73,7 @@ public class PluginActionManager<T extends Plugin> {
private final boolean mIsDebuggable;
private final PackageManager mPm;
private final Class<T> mPluginClass;
private final PluginInitializer mInitializer;
private final Executor mMainExecutor;
private final Executor mBgExecutor;
@@ -86,11 +87,13 @@ public class PluginActionManager<T extends Plugin> {
Executor mainExecutor,
Executor bgExecutor,
boolean debuggable,
PluginInitializer initializer,
NotificationManager notificationManager,
PluginEnabler pluginEnabler,
List<String> privilegedPlugins,
PluginInstance.Factory pluginInstanceFactory) {
mPluginClass = pluginClass;
mInitializer = initializer;
mMainExecutor = mainExecutor;
mBgExecutor = bgExecutor;
mContext = context;
@@ -373,19 +376,21 @@ public class PluginActionManager<T extends Plugin> {
private final PackageManager mPackageManager;
private final Executor mMainExecutor;
private final Executor mBgExecutor;
private final PluginInitializer mInitializer;
private final NotificationManager mNotificationManager;
private final PluginEnabler mPluginEnabler;
private final List<String> mPrivilegedPlugins;
private final PluginInstance.Factory mPluginInstanceFactory;
public Factory(Context context, PackageManager packageManager,
Executor mainExecutor, Executor bgExecutor,
Executor mainExecutor, Executor bgExecutor, PluginInitializer initializer,
NotificationManager notificationManager, PluginEnabler pluginEnabler,
List<String> privilegedPlugins, PluginInstance.Factory pluginInstanceFactory) {
mContext = context;
mPackageManager = packageManager;
mMainExecutor = mainExecutor;
mBgExecutor = bgExecutor;
mInitializer = initializer;
mNotificationManager = notificationManager;
mPluginEnabler = pluginEnabler;
mPrivilegedPlugins = privilegedPlugins;
@@ -397,7 +402,7 @@ public class PluginActionManager<T extends Plugin> {
boolean allowMultiple, boolean debuggable) {
return new PluginActionManager<>(mContext, mPackageManager, action, listener,
pluginClass, allowMultiple, mMainExecutor, mBgExecutor,
debuggable, mNotificationManager, mPluginEnabler,
debuggable, mInitializer, mNotificationManager, mPluginEnabler,
mPrivilegedPlugins, mPluginInstanceFactory);
}
}

View File

@@ -0,0 +1,21 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.android.systemui.shared.plugins;
/**
* Provides necessary components for initializing {@link PluginManagerImpl}.
*/
public interface PluginInitializer {
}

View File

@@ -24,7 +24,6 @@ import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.GlobalActions;
import com.android.systemui.plugins.PluginDependencyProvider;
import com.android.systemui.plugins.VolumeDialogController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.StatusBarStateControllerImpl;
@@ -33,7 +32,6 @@ import com.android.systemui.volume.VolumeDialogControllerImpl;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
/**
* Module for binding Plugin implementations.
@@ -41,40 +39,36 @@ import dagger.Provides;
* TODO(b/166258224): Many of these should be moved closer to their implementations.
*/
@Module
public abstract class PluginModule {
/** */
@Provides
static ActivityStarter provideActivityStarter(ActivityStarterDelegate delegate,
PluginDependencyProvider dependencyProvider) {
dependencyProvider.allowPluginDependency(ActivityStarter.class, delegate);
return delegate;
}
public interface PluginModule {
/** */
@Binds
abstract DarkIconDispatcher provideDarkIconDispatcher(DarkIconDispatcherImpl controllerImpl);
ActivityStarter provideActivityStarter(ActivityStarterDelegate delegate);
/** */
@Binds
abstract FalsingManager provideFalsingManager(FalsingManagerProxy falsingManagerImpl);
DarkIconDispatcher provideDarkIconDispatcher(DarkIconDispatcherImpl controllerImpl);
/** */
@Binds
abstract GlobalActions provideGlobalActions(GlobalActionsImpl controllerImpl);
FalsingManager provideFalsingManager(FalsingManagerProxy falsingManagerImpl);
/** */
@Binds
abstract GlobalActions.GlobalActionsManager provideGlobalActionsManager(
GlobalActions provideGlobalActions(GlobalActionsImpl controllerImpl);
/** */
@Binds
GlobalActions.GlobalActionsManager provideGlobalActionsManager(
GlobalActionsComponent controllerImpl);
/** */
@Binds
abstract StatusBarStateController provideStatusBarStateController(
StatusBarStateController provideStatusBarStateController(
StatusBarStateControllerImpl controllerImpl);
/** */
@Binds
abstract VolumeDialogController provideVolumeDialogController(
VolumeDialogControllerImpl controllerImpl);
VolumeDialogController provideVolumeDialogController(VolumeDialogControllerImpl controllerImpl);
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.android.systemui.plugins;
import com.android.systemui.shared.plugins.PluginInitializer;
import javax.inject.Inject;
import javax.inject.Singleton;
/** */
@Singleton
public class PluginInitializerImpl implements PluginInitializer {
@Inject
public PluginInitializerImpl(PluginDependencyProvider dependencyProvider) {
dependencyProvider.allowPluginDependency(ActivityStarter.class);
}
}

View File

@@ -28,6 +28,7 @@ import com.android.systemui.dagger.PluginModule;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.shared.plugins.PluginActionManager;
import com.android.systemui.shared.plugins.PluginEnabler;
import com.android.systemui.shared.plugins.PluginInitializer;
import com.android.systemui.shared.plugins.PluginInstance;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.shared.plugins.PluginManagerImpl;
@@ -68,6 +69,9 @@ public abstract class PluginsModule {
@Binds
abstract PluginEnabler bindsPluginEnablerImpl(PluginEnablerImpl impl);
@Binds
abstract PluginInitializer bindsPluginInitializerImpl(PluginInitializerImpl impl);
@Provides
@Singleton
static PluginInstance.Factory providesPluginInstanceFactory(
@@ -85,12 +89,12 @@ public abstract class PluginsModule {
@Singleton
static PluginActionManager.Factory providePluginInstanceManagerFactory(Context context,
PackageManager packageManager, @Main Executor mainExecutor,
@Named(PLUGIN_THREAD) Executor pluginExecutor,
@Named(PLUGIN_THREAD) Executor pluginExecutor, PluginInitializer initializer,
NotificationManager notificationManager, PluginEnabler pluginEnabler,
@Named(PLUGIN_PRIVILEGED) List<String> privilegedPlugins,
PluginInstance.Factory pluginInstanceFactory) {
return new PluginActionManager.Factory(
context, packageManager, mainExecutor, pluginExecutor,
context, packageManager, mainExecutor, pluginExecutor, initializer,
notificationManager, pluginEnabler, privilegedPlugins, pluginInstanceFactory);
}

View File

@@ -74,6 +74,7 @@ public class PluginActionManagerTest extends SysuiTestCase {
private PluginEnabler mMockEnabler;
ComponentName mTestPluginComponentName =
new ComponentName(PRIVILEGED_PACKAGE, TestPlugin.class.getName());
private PluginInitializer mInitializer;
private final FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock());
NotificationManager mNotificationManager;
private PluginInstance<TestPlugin> mPluginInstance;
@@ -97,13 +98,14 @@ public class PluginActionManagerTest extends SysuiTestCase {
mMockListener = mock(PluginListener.class);
mMockEnabler = mock(PluginEnabler.class);
mMockVersionInfo = mock(VersionInfo.class);
mInitializer = mock(PluginInitializer.class);
mNotificationManager = mock(NotificationManager.class);
mMockPlugin = mock(TestPlugin.class);
mPluginInstance = mock(PluginInstance.class);
when(mPluginInstance.getComponentName()).thenReturn(mTestPluginComponentName);
when(mPluginInstance.getPackage()).thenReturn(mTestPluginComponentName.getPackageName());
mActionManagerFactory = new PluginActionManager.Factory(getContext(), mMockPm,
mFakeExecutor, mFakeExecutor, mNotificationManager, mMockEnabler,
mFakeExecutor, mFakeExecutor, mInitializer, mNotificationManager, mMockEnabler,
new ArrayList<>(), mPluginInstanceFactory);
mPluginActionManager = mActionManagerFactory.create("myAction", mMockListener,
@@ -176,7 +178,7 @@ public class PluginActionManagerTest extends SysuiTestCase {
public void testNonDebuggable_privileged() throws Exception {
// Create a version that thinks the build is not debuggable.
PluginActionManager.Factory factory = new PluginActionManager.Factory(getContext(),
mMockPm, mFakeExecutor, mFakeExecutor, mNotificationManager,
mMockPm, mFakeExecutor, mFakeExecutor, mInitializer, mNotificationManager,
mMockEnabler, Collections.singletonList(PRIVILEGED_PACKAGE),
mPluginInstanceFactory);
mPluginActionManager = factory.create("myAction", mMockListener,
@@ -220,7 +222,7 @@ public class PluginActionManagerTest extends SysuiTestCase {
@Test
public void testDisablePrivileged() throws Exception {
PluginActionManager.Factory factory = new PluginActionManager.Factory(getContext(),
mMockPm, mFakeExecutor, mFakeExecutor, mNotificationManager,
mMockPm, mFakeExecutor, mFakeExecutor, mInitializer, mNotificationManager,
mMockEnabler, Collections.singletonList(PRIVILEGED_PACKAGE),
mPluginInstanceFactory);
mPluginActionManager = factory.create("myAction", mMockListener,