diff --git a/packages/SystemUI/README.md b/packages/SystemUI/README.md index ee8d02301d5d3..60994d892b6e8 100644 --- a/packages/SystemUI/README.md +++ b/packages/SystemUI/README.md @@ -144,6 +144,10 @@ Biometric UI. Delegates SysUI events to WM Shell controllers. +### [com.android.systemui.people.widget.PeopleSpaceWidgetEnabler](/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetEnabler.java) + +Enables People Space widgets. + --- * [Plugins](/packages/SystemUI/docs/plugins.md) diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 78927f8bf8d4b..13c01102d0323 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -312,6 +312,7 @@ com.android.systemui.accessibility.SystemActions com.android.systemui.toast.ToastUI com.android.systemui.wmshell.WMShell + com.android.systemui.people.widget.PeopleSpaceWidgetEnabler diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java index 78f7966558ab4..865ca40b1f4cd 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIApplication.java @@ -19,18 +19,15 @@ package com.android.systemui; import android.app.ActivityThread; import android.app.Application; import android.content.BroadcastReceiver; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; import android.content.res.Configuration; import android.os.Process; import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; -import android.provider.Settings; import android.util.Log; import android.util.TimingsTraceLog; import android.view.SurfaceControl; @@ -40,7 +37,6 @@ import com.android.systemui.dagger.ContextComponentHelper; import com.android.systemui.dagger.GlobalRootComponent; import com.android.systemui.dagger.SysUIComponent; import com.android.systemui.dump.DumpManager; -import com.android.systemui.people.widget.PeopleSpaceWidgetProvider; import com.android.systemui.shared.system.ThreadedRendererCompat; import com.android.systemui.util.NotificationChannels; @@ -125,21 +121,6 @@ public class SystemUIApplication extends Application implements mServices[i].onBootCompleted(); } } - - // If SHOW_PEOPLE_SPACE is true, enable People Space widget provider. - // TODO(b/170396074): Migrate to new feature flag (go/silk-flags-howto) - try { - int showPeopleSpace = Settings.Global.getInt(context.getContentResolver(), - Settings.Global.SHOW_PEOPLE_SPACE, 1); - context.getPackageManager().setComponentEnabledSetting( - new ComponentName(context, PeopleSpaceWidgetProvider.class), - showPeopleSpace == 1 - ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED - : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP); - } catch (Exception e) { - Log.w(TAG, "Error enabling People Space widget:", e); - } } }, bootCompletedFilter); diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIBinder.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIBinder.java index e5c9d104ea93e..ec3188a6144f4 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIBinder.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIBinder.java @@ -27,6 +27,7 @@ import com.android.systemui.globalactions.GlobalActionsComponent; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.keyguard.dagger.KeyguardModule; import com.android.systemui.media.systemsounds.HomeSoundEffectController; +import com.android.systemui.people.widget.PeopleSpaceWidgetEnabler; import com.android.systemui.power.PowerUI; import com.android.systemui.recents.Recents; import com.android.systemui.recents.RecentsModule; @@ -177,4 +178,10 @@ public abstract class SystemUIBinder { @IntoMap @ClassKey(HomeSoundEffectController.class) public abstract SystemUI bindHomeSoundEffectController(HomeSoundEffectController sysui); + + /** Inject into PeopleSpaceWidgetEnabler. */ + @Binds + @IntoMap + @ClassKey(PeopleSpaceWidgetEnabler.class) + public abstract SystemUI bindPeopleSpaceWidgetEnabler(PeopleSpaceWidgetEnabler sysui); } diff --git a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetEnabler.java b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetEnabler.java new file mode 100644 index 0000000000000..b188acbf30f3c --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetEnabler.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2021 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.people.widget; + +import android.content.ComponentName; +import android.content.Context; +import android.content.pm.PackageManager; +import android.util.Log; + +import com.android.systemui.SystemUI; +import com.android.systemui.dagger.SysUISingleton; +import com.android.systemui.statusbar.FeatureFlags; + +import javax.inject.Inject; + +/** + * Enables People Space widgets. + */ +@SysUISingleton +public class PeopleSpaceWidgetEnabler extends SystemUI { + private static final String TAG = "PeopleSpaceWdgtEnabler"; + private Context mContext; + private FeatureFlags mFeatureFlags; + + @Inject + public PeopleSpaceWidgetEnabler(Context context, FeatureFlags featureFlags) { + super(context); + mContext = context; + mFeatureFlags = featureFlags; + } + + @Override + public void start() { + Log.d(TAG, "Starting service"); + try { + boolean showPeopleSpace = mFeatureFlags.isPeopleTileEnabled(); + mContext.getPackageManager().setComponentEnabledSetting( + new ComponentName(mContext, PeopleSpaceWidgetProvider.class), + showPeopleSpace + ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED + : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + } catch (Exception e) { + Log.w(TAG, "Error enabling People Space widget:", e); + } + } +}