diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java index 2dade21caca7e..b05582ee1ec9e 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java @@ -18,7 +18,6 @@ package com.android.systemui; import android.app.ActivityThread; import android.content.Context; -import android.content.res.AssetManager; import android.content.res.Resources; import android.os.Handler; import android.os.HandlerThread; @@ -29,7 +28,6 @@ import com.android.systemui.dagger.DaggerGlobalRootComponent; import com.android.systemui.dagger.GlobalRootComponent; import com.android.systemui.dagger.SysUIComponent; import com.android.systemui.dagger.WMComponent; -import com.android.systemui.navigationbar.gestural.BackGestureTfClassifierProvider; import com.android.systemui.screenshot.ScreenshotNotificationSmartActionsProvider; import com.android.wm.shell.dagger.WMShellConcurrencyModule; import com.android.wm.shell.transition.ShellTransitions; @@ -251,13 +249,4 @@ public class SystemUIFactory { Context context, Executor executor, Handler uiHandler) { return new ScreenshotNotificationSmartActionsProvider(); } - - /** - * Creates an instance of BackGestureTfClassifierProvider. - * This method is overridden in vendor specific implementation of Sys UI. - */ - public BackGestureTfClassifierProvider createBackGestureTfClassifierProvider( - AssetManager am, String modelName) { - return new BackGestureTfClassifierProvider(); - } } diff --git a/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java b/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java index afc58ef70ee17..4096ed4283e51 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/FrameworkServicesModule.java @@ -42,6 +42,7 @@ import android.content.pm.IPackageManager; import android.content.pm.LauncherApps; import android.content.pm.PackageManager; import android.content.pm.ShortcutManager; +import android.content.res.AssetManager; import android.content.res.Resources; import android.hardware.SensorManager; import android.hardware.SensorPrivacyManager; @@ -91,6 +92,7 @@ import com.android.internal.jank.InteractionJankMonitor; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.util.LatencyTracker; import com.android.systemui.Prefs; +import com.android.systemui.dagger.qualifiers.Application; import com.android.systemui.dagger.qualifiers.DisplayId; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dagger.qualifiers.TestHarness; @@ -404,6 +406,12 @@ public class FrameworkServicesModule { return context.getResources(); } + @Provides + @Application + static AssetManager provideAssetManager(@Application Context context) { + return context.getAssets(); + } + @Provides @Singleton static RoleManager provideRoleManager(Context context) { diff --git a/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java index 4e48a5261f6bb..c4fca60d4b449 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java @@ -35,6 +35,7 @@ import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManagerImpl; import com.android.systemui.doze.DozeHost; import com.android.systemui.media.dagger.MediaModule; +import com.android.systemui.navigationbar.gestural.GestureModule; import com.android.systemui.plugins.qs.QSFactory; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.power.EnhancedEstimates; @@ -94,6 +95,7 @@ import dagger.Provides; * SystemUI code that variants of SystemUI _must_ include to function correctly. */ @Module(includes = { + GestureModule.class, MediaModule.class, PowerModule.class, QSModule.class, diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java index 3039d9d56c803..bd6a5fc8661b2 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java @@ -59,7 +59,6 @@ import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.internal.policy.GestureNavigationSettingsObserver; import com.android.internal.util.LatencyTracker; import com.android.systemui.R; -import com.android.systemui.SystemUIFactory; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.flags.FeatureFlags; @@ -96,6 +95,7 @@ import java.util.concurrent.Executor; import java.util.function.Consumer; import javax.inject.Inject; +import javax.inject.Provider; /** * Utility class to handle edge swipes for back gesture @@ -196,6 +196,8 @@ public class EdgeBackGestureHandler extends CurrentUserTracker private final Region mExcludeRegion = new Region(); private final Region mUnrestrictedExcludeRegion = new Region(); private final LatencyTracker mLatencyTracker; + private final Provider + mBackGestureTfClassifierProviderProvider; private final FeatureFlags mFeatureFlags; // The left side edge width where touch down is allowed @@ -316,6 +318,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker Optional pipOptional, FalsingManager falsingManager, LatencyTracker latencyTracker, + Provider backGestureTfClassifierProviderProvider, FeatureFlags featureFlags) { super(broadcastDispatcher); mContext = context; @@ -333,6 +336,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker mPipOptional = pipOptional; mFalsingManager = falsingManager; mLatencyTracker = latencyTracker; + mBackGestureTfClassifierProviderProvider = backGestureTfClassifierProviderProvider; mFeatureFlags = featureFlags; ComponentName recentsComponentName = ComponentName.unflattenFromString( context.getString(com.android.internal.R.string.config_recentsComponentName)); @@ -612,10 +616,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker } if (newState) { - String mlModelName = DeviceConfig.getString(DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.BACK_GESTURE_ML_MODEL_NAME, "backgesture"); - mBackGestureTfClassifierProvider = SystemUIFactory.getInstance() - .createBackGestureTfClassifierProvider(mContext.getAssets(), mlModelName); + mBackGestureTfClassifierProvider = mBackGestureTfClassifierProviderProvider.get(); mMLModelThreshold = DeviceConfig.getFloat(DeviceConfig.NAMESPACE_SYSTEMUI, SystemUiDeviceConfigFlags.BACK_GESTURE_ML_MODEL_THRESHOLD, 0.9f); if (mBackGestureTfClassifierProvider.isActive()) { @@ -1007,6 +1008,8 @@ public class EdgeBackGestureHandler extends CurrentUserTracker private final Optional mPipOptional; private final FalsingManager mFalsingManager; private final LatencyTracker mLatencyTracker; + private final Provider + mBackGestureTfClassifierProviderProvider; private final FeatureFlags mFeatureFlags; @Inject @@ -1024,6 +1027,8 @@ public class EdgeBackGestureHandler extends CurrentUserTracker Optional pipOptional, FalsingManager falsingManager, LatencyTracker latencyTracker, + Provider + backGestureTfClassifierProviderProvider, FeatureFlags featureFlags) { mOverviewProxyService = overviewProxyService; mSysUiState = sysUiState; @@ -1039,6 +1044,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker mPipOptional = pipOptional; mFalsingManager = falsingManager; mLatencyTracker = latencyTracker; + mBackGestureTfClassifierProviderProvider = backGestureTfClassifierProviderProvider; mFeatureFlags = featureFlags; } @@ -1060,6 +1066,7 @@ public class EdgeBackGestureHandler extends CurrentUserTracker mPipOptional, mFalsingManager, mLatencyTracker, + mBackGestureTfClassifierProviderProvider, mFeatureFlags); } } diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/GestureModule.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/GestureModule.java new file mode 100644 index 0000000000000..f98496d437303 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/GestureModule.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2022 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.navigationbar.gestural; + +import dagger.Module; +import dagger.Provides; + +/** + * + */ +@Module +public interface GestureModule { + /** */ + @Provides + static BackGestureTfClassifierProvider providsBackGestureTfClassifierProvider() { + return new BackGestureTfClassifierProvider(); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java index 9a19d8d111903..36a49af2276ac 100644 --- a/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java +++ b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java @@ -35,6 +35,7 @@ import com.android.systemui.demomode.DemoModeController; import com.android.systemui.dock.DockManager; import com.android.systemui.dock.DockManagerImpl; import com.android.systemui.doze.DozeHost; +import com.android.systemui.navigationbar.gestural.GestureModule; import com.android.systemui.plugins.qs.QSFactory; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.power.EnhancedEstimates; @@ -87,6 +88,7 @@ import dagger.multibindings.IntoSet; * overridden by the System UI implementation. */ @Module(includes = { + GestureModule.class, PowerModule.class, QSModule.class, VolumeModule.class,