Loading packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarModule.java +0 −9 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import com.android.app.viewcapture.ViewCapture; import com.android.app.viewcapture.ViewCaptureAwareWindowManager; import com.android.systemui.dagger.qualifiers.DisplayId; import com.android.systemui.navigationbar.NavigationBarComponent.NavigationBarScope; import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler; import com.android.systemui.navigationbar.views.NavigationBarFrame; import com.android.systemui.navigationbar.views.NavigationBarView; import com.android.systemui.res.R; Loading Loading @@ -64,14 +63,6 @@ public interface NavigationBarModule { return barView.findViewById(R.id.navigation_bar_view); } /** */ @Provides @NavigationBarScope static EdgeBackGestureHandler provideEdgeBackGestureHandler( EdgeBackGestureHandler.Factory factory, @DisplayId Context context) { return factory.create(context); } /** A WindowManager specific to the display's context. */ @Provides @NavigationBarScope Loading packages/SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt +10 −40 Original line number Diff line number Diff line Loading @@ -41,11 +41,11 @@ import com.android.systemui.plugins.NavigationEdgeBackPlugin import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.util.ViewController import com.android.systemui.util.concurrency.BackPanelUiThread import com.android.systemui.util.concurrency.UiThreadContext import com.android.systemui.util.time.SystemClock import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import java.io.PrintWriter import javax.inject.Inject import kotlin.math.abs import kotlin.math.max import kotlin.math.min Loading Loading @@ -82,11 +82,12 @@ private const val POP_ON_INACTIVE_VELOCITY = -1.5f private const val DEBUG = false class BackPanelController internal constructor( context: Context, @AssistedInject constructor( @Assisted context: Context, private val windowManager: ViewCaptureAwareWindowManager, private val viewConfiguration: ViewConfiguration, private val mainHandler: Handler, @Assisted private val mainHandler: Handler, private val systemClock: SystemClock, private val vibratorHelper: VibratorHelper, private val configurationController: ConfigurationController, Loading @@ -94,40 +95,9 @@ internal constructor( private val interactionJankMonitor: InteractionJankMonitor, ) : ViewController<BackPanel>(BackPanel(context, latencyTracker)), NavigationEdgeBackPlugin { /** * Injectable instance to create a new BackPanelController. * * Necessary because EdgeBackGestureHandler sometimes needs to create new instances of * BackPanelController, and we need to match EdgeBackGestureHandler's context. */ class Factory @Inject constructor( private val windowManager: ViewCaptureAwareWindowManager, private val viewConfiguration: ViewConfiguration, @BackPanelUiThread private val uiThreadContext: UiThreadContext, private val systemClock: SystemClock, private val vibratorHelper: VibratorHelper, private val configurationController: ConfigurationController, private val latencyTracker: LatencyTracker, private val interactionJankMonitor: InteractionJankMonitor, ) { /** Construct a [BackPanelController]. */ fun create(context: Context): BackPanelController { uiThreadContext.isCurrentThread() return BackPanelController( context, windowManager, viewConfiguration, uiThreadContext.handler, systemClock, vibratorHelper, configurationController, latencyTracker, interactionJankMonitor, ) .also { it.init() } } @AssistedFactory interface Factory { fun create(context: Context, handler: Handler): BackPanelController } @VisibleForTesting internal var params: EdgePanelParams = EdgePanelParams(resources) Loading packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +22 −110 Original line number Diff line number Diff line Loading @@ -103,6 +103,10 @@ import com.android.wm.shell.back.BackAnimation; import com.android.wm.shell.desktopmode.DesktopMode; import com.android.wm.shell.pip.Pip; import dagger.assisted.Assisted; import dagger.assisted.AssistedFactory; import dagger.assisted.AssistedInject; import kotlinx.coroutines.Job; import java.io.PrintWriter; Loading @@ -117,7 +121,6 @@ import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; import javax.inject.Inject; import javax.inject.Provider; /** Loading Loading @@ -414,8 +417,21 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack } }; /** * Factory for EdgeBackGestureHandler. Necessary because per-display contexts can't be injected. * With this, you can pass in a specific context that knows what display it is in. */ @AssistedFactory public interface Factory { /** * Creates a new EdgeBackGestureHandler with the given context. */ EdgeBackGestureHandler create(Context context); } @AssistedInject EdgeBackGestureHandler( Context context, @Assisted Context context, OverviewProxyService overviewProxyService, SysUiState sysUiState, PluginManager pluginManager, Loading Loading @@ -751,7 +767,10 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack } private void resetEdgeBackPlugin() { setEdgeBackPlugin(mBackPanelControllerFactory.create(mContext)); BackPanelController backPanelController = mBackPanelControllerFactory.create(mContext, mUiThreadContext.getHandler()); backPanelController.init(); setEdgeBackPlugin(backPanelController); } private void setEdgeBackPlugin(NavigationEdgeBackPlugin edgeBackPlugin) { Loading Loading @@ -1329,113 +1348,6 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack } } /** * Injectable instance to create a new EdgeBackGestureHandler. * * Necessary because we don't have good handling of per-display contexts at the moment. With * this, you can pass in a specific context that knows what display it is in. */ public static class Factory { private final OverviewProxyService mOverviewProxyService; private final SysUiState mSysUiState; private final PluginManager mPluginManager; private final UiThreadContext mUiThreadContext; private final Executor mBackgroundExecutor; private final Handler mBgHandler; private final UserTracker mUserTracker; private final NavigationModeController mNavigationModeController; private final BackPanelController.Factory mBackPanelControllerFactory; private final ViewConfiguration mViewConfiguration; private final WindowManager mWindowManager; private final IWindowManager mWindowManagerService; private final InputManager mInputManager; private final Optional<Pip> mPipOptional; private final Optional<DesktopMode> mDesktopModeOptional; private final FalsingManager mFalsingManager; private final Provider<BackGestureTfClassifierProvider> mBackGestureTfClassifierProviderProvider; private final Provider<LightBarController> mLightBarControllerProvider; private final NotificationShadeWindowController mNotificationShadeWindowController; private final GestureInteractor mGestureInteractor; private final JavaAdapter mJavaAdapter; @Inject public Factory(OverviewProxyService overviewProxyService, SysUiState sysUiState, PluginManager pluginManager, @BackPanelUiThread UiThreadContext uiThreadContext, @Background Executor backgroundExecutor, @Background Handler bgHandler, UserTracker userTracker, NavigationModeController navigationModeController, BackPanelController.Factory backPanelControllerFactory, ViewConfiguration viewConfiguration, WindowManager windowManager, IWindowManager windowManagerService, InputManager inputManager, Optional<Pip> pipOptional, Optional<DesktopMode> desktopModeOptional, FalsingManager falsingManager, Provider<BackGestureTfClassifierProvider> backGestureTfClassifierProviderProvider, Provider<LightBarController> lightBarControllerProvider, NotificationShadeWindowController notificationShadeWindowController, GestureInteractor gestureInteractor, JavaAdapter javaAdapter) { mOverviewProxyService = overviewProxyService; mSysUiState = sysUiState; mPluginManager = pluginManager; mUiThreadContext = uiThreadContext; mBackgroundExecutor = backgroundExecutor; mBgHandler = bgHandler; mUserTracker = userTracker; mNavigationModeController = navigationModeController; mBackPanelControllerFactory = backPanelControllerFactory; mViewConfiguration = viewConfiguration; mWindowManager = windowManager; mWindowManagerService = windowManagerService; mInputManager = inputManager; mPipOptional = pipOptional; mDesktopModeOptional = desktopModeOptional; mFalsingManager = falsingManager; mBackGestureTfClassifierProviderProvider = backGestureTfClassifierProviderProvider; mLightBarControllerProvider = lightBarControllerProvider; mNotificationShadeWindowController = notificationShadeWindowController; mGestureInteractor = gestureInteractor; mJavaAdapter = javaAdapter; } /** Construct a {@link EdgeBackGestureHandler}. */ public EdgeBackGestureHandler create(Context context) { return mUiThreadContext.runWithScissors( () -> new EdgeBackGestureHandler( context, mOverviewProxyService, mSysUiState, mPluginManager, mUiThreadContext, mBackgroundExecutor, mBgHandler, mUserTracker, mNavigationModeController, mBackPanelControllerFactory, mViewConfiguration, mWindowManager, mWindowManagerService, mInputManager, mPipOptional, mDesktopModeOptional, mFalsingManager, mBackGestureTfClassifierProviderProvider, mLightBarControllerProvider, mNotificationShadeWindowController, mGestureInteractor, mJavaAdapter)); } } private static class LogArray extends ArrayDeque<String> { private final int mLength; Loading Loading
packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarModule.java +0 −9 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ import com.android.app.viewcapture.ViewCapture; import com.android.app.viewcapture.ViewCaptureAwareWindowManager; import com.android.systemui.dagger.qualifiers.DisplayId; import com.android.systemui.navigationbar.NavigationBarComponent.NavigationBarScope; import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler; import com.android.systemui.navigationbar.views.NavigationBarFrame; import com.android.systemui.navigationbar.views.NavigationBarView; import com.android.systemui.res.R; Loading Loading @@ -64,14 +63,6 @@ public interface NavigationBarModule { return barView.findViewById(R.id.navigation_bar_view); } /** */ @Provides @NavigationBarScope static EdgeBackGestureHandler provideEdgeBackGestureHandler( EdgeBackGestureHandler.Factory factory, @DisplayId Context context) { return factory.create(context); } /** A WindowManager specific to the display's context. */ @Provides @NavigationBarScope Loading
packages/SystemUI/src/com/android/systemui/navigationbar/gestural/BackPanelController.kt +10 −40 Original line number Diff line number Diff line Loading @@ -41,11 +41,11 @@ import com.android.systemui.plugins.NavigationEdgeBackPlugin import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.util.ViewController import com.android.systemui.util.concurrency.BackPanelUiThread import com.android.systemui.util.concurrency.UiThreadContext import com.android.systemui.util.time.SystemClock import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import java.io.PrintWriter import javax.inject.Inject import kotlin.math.abs import kotlin.math.max import kotlin.math.min Loading Loading @@ -82,11 +82,12 @@ private const val POP_ON_INACTIVE_VELOCITY = -1.5f private const val DEBUG = false class BackPanelController internal constructor( context: Context, @AssistedInject constructor( @Assisted context: Context, private val windowManager: ViewCaptureAwareWindowManager, private val viewConfiguration: ViewConfiguration, private val mainHandler: Handler, @Assisted private val mainHandler: Handler, private val systemClock: SystemClock, private val vibratorHelper: VibratorHelper, private val configurationController: ConfigurationController, Loading @@ -94,40 +95,9 @@ internal constructor( private val interactionJankMonitor: InteractionJankMonitor, ) : ViewController<BackPanel>(BackPanel(context, latencyTracker)), NavigationEdgeBackPlugin { /** * Injectable instance to create a new BackPanelController. * * Necessary because EdgeBackGestureHandler sometimes needs to create new instances of * BackPanelController, and we need to match EdgeBackGestureHandler's context. */ class Factory @Inject constructor( private val windowManager: ViewCaptureAwareWindowManager, private val viewConfiguration: ViewConfiguration, @BackPanelUiThread private val uiThreadContext: UiThreadContext, private val systemClock: SystemClock, private val vibratorHelper: VibratorHelper, private val configurationController: ConfigurationController, private val latencyTracker: LatencyTracker, private val interactionJankMonitor: InteractionJankMonitor, ) { /** Construct a [BackPanelController]. */ fun create(context: Context): BackPanelController { uiThreadContext.isCurrentThread() return BackPanelController( context, windowManager, viewConfiguration, uiThreadContext.handler, systemClock, vibratorHelper, configurationController, latencyTracker, interactionJankMonitor, ) .also { it.init() } } @AssistedFactory interface Factory { fun create(context: Context, handler: Handler): BackPanelController } @VisibleForTesting internal var params: EdgePanelParams = EdgePanelParams(resources) Loading
packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +22 −110 Original line number Diff line number Diff line Loading @@ -103,6 +103,10 @@ import com.android.wm.shell.back.BackAnimation; import com.android.wm.shell.desktopmode.DesktopMode; import com.android.wm.shell.pip.Pip; import dagger.assisted.Assisted; import dagger.assisted.AssistedFactory; import dagger.assisted.AssistedInject; import kotlinx.coroutines.Job; import java.io.PrintWriter; Loading @@ -117,7 +121,6 @@ import java.util.concurrent.Executor; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; import javax.inject.Inject; import javax.inject.Provider; /** Loading Loading @@ -414,8 +417,21 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack } }; /** * Factory for EdgeBackGestureHandler. Necessary because per-display contexts can't be injected. * With this, you can pass in a specific context that knows what display it is in. */ @AssistedFactory public interface Factory { /** * Creates a new EdgeBackGestureHandler with the given context. */ EdgeBackGestureHandler create(Context context); } @AssistedInject EdgeBackGestureHandler( Context context, @Assisted Context context, OverviewProxyService overviewProxyService, SysUiState sysUiState, PluginManager pluginManager, Loading Loading @@ -751,7 +767,10 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack } private void resetEdgeBackPlugin() { setEdgeBackPlugin(mBackPanelControllerFactory.create(mContext)); BackPanelController backPanelController = mBackPanelControllerFactory.create(mContext, mUiThreadContext.getHandler()); backPanelController.init(); setEdgeBackPlugin(backPanelController); } private void setEdgeBackPlugin(NavigationEdgeBackPlugin edgeBackPlugin) { Loading Loading @@ -1329,113 +1348,6 @@ public class EdgeBackGestureHandler implements PluginListener<NavigationEdgeBack } } /** * Injectable instance to create a new EdgeBackGestureHandler. * * Necessary because we don't have good handling of per-display contexts at the moment. With * this, you can pass in a specific context that knows what display it is in. */ public static class Factory { private final OverviewProxyService mOverviewProxyService; private final SysUiState mSysUiState; private final PluginManager mPluginManager; private final UiThreadContext mUiThreadContext; private final Executor mBackgroundExecutor; private final Handler mBgHandler; private final UserTracker mUserTracker; private final NavigationModeController mNavigationModeController; private final BackPanelController.Factory mBackPanelControllerFactory; private final ViewConfiguration mViewConfiguration; private final WindowManager mWindowManager; private final IWindowManager mWindowManagerService; private final InputManager mInputManager; private final Optional<Pip> mPipOptional; private final Optional<DesktopMode> mDesktopModeOptional; private final FalsingManager mFalsingManager; private final Provider<BackGestureTfClassifierProvider> mBackGestureTfClassifierProviderProvider; private final Provider<LightBarController> mLightBarControllerProvider; private final NotificationShadeWindowController mNotificationShadeWindowController; private final GestureInteractor mGestureInteractor; private final JavaAdapter mJavaAdapter; @Inject public Factory(OverviewProxyService overviewProxyService, SysUiState sysUiState, PluginManager pluginManager, @BackPanelUiThread UiThreadContext uiThreadContext, @Background Executor backgroundExecutor, @Background Handler bgHandler, UserTracker userTracker, NavigationModeController navigationModeController, BackPanelController.Factory backPanelControllerFactory, ViewConfiguration viewConfiguration, WindowManager windowManager, IWindowManager windowManagerService, InputManager inputManager, Optional<Pip> pipOptional, Optional<DesktopMode> desktopModeOptional, FalsingManager falsingManager, Provider<BackGestureTfClassifierProvider> backGestureTfClassifierProviderProvider, Provider<LightBarController> lightBarControllerProvider, NotificationShadeWindowController notificationShadeWindowController, GestureInteractor gestureInteractor, JavaAdapter javaAdapter) { mOverviewProxyService = overviewProxyService; mSysUiState = sysUiState; mPluginManager = pluginManager; mUiThreadContext = uiThreadContext; mBackgroundExecutor = backgroundExecutor; mBgHandler = bgHandler; mUserTracker = userTracker; mNavigationModeController = navigationModeController; mBackPanelControllerFactory = backPanelControllerFactory; mViewConfiguration = viewConfiguration; mWindowManager = windowManager; mWindowManagerService = windowManagerService; mInputManager = inputManager; mPipOptional = pipOptional; mDesktopModeOptional = desktopModeOptional; mFalsingManager = falsingManager; mBackGestureTfClassifierProviderProvider = backGestureTfClassifierProviderProvider; mLightBarControllerProvider = lightBarControllerProvider; mNotificationShadeWindowController = notificationShadeWindowController; mGestureInteractor = gestureInteractor; mJavaAdapter = javaAdapter; } /** Construct a {@link EdgeBackGestureHandler}. */ public EdgeBackGestureHandler create(Context context) { return mUiThreadContext.runWithScissors( () -> new EdgeBackGestureHandler( context, mOverviewProxyService, mSysUiState, mPluginManager, mUiThreadContext, mBackgroundExecutor, mBgHandler, mUserTracker, mNavigationModeController, mBackPanelControllerFactory, mViewConfiguration, mWindowManager, mWindowManagerService, mInputManager, mPipOptional, mDesktopModeOptional, mFalsingManager, mBackGestureTfClassifierProviderProvider, mLightBarControllerProvider, mNotificationShadeWindowController, mGestureInteractor, mJavaAdapter)); } } private static class LogArray extends ArrayDeque<String> { private final int mLength; Loading