Loading packages/SystemUI/src/com/android/systemui/Dependency.java +1 −30 Original line number Diff line number Diff line Loading @@ -22,17 +22,13 @@ import android.util.ArrayMap; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.util.Preconditions; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.accessibility.AccessibilityButtonModeObserver; import com.android.systemui.accessibility.AccessibilityButtonTargetsObserver; import com.android.systemui.animation.DialogTransitionAnimator; import com.android.systemui.assist.AssistManager; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.fragments.FragmentService; Loading @@ -47,7 +43,6 @@ import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.NotificationRemoteInputManager; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager; import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager; import com.android.systemui.statusbar.notification.stack.AmbientState; Loading @@ -58,7 +53,6 @@ import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider; import com.android.systemui.statusbar.phone.SystemUIDialogManager; import com.android.systemui.statusbar.policy.BluetoothController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.FlashlightController; import com.android.systemui.statusbar.window.StatusBarWindowController; import com.android.systemui.tuner.TunablePadding.TunablePaddingService; import com.android.systemui.tuner.TunerService; Loading @@ -70,6 +64,7 @@ import java.util.function.Consumer; import javax.inject.Inject; import javax.inject.Named; /** * Class to handle ugly dependencies throughout sysui until we determine the * long-term dependency injection solution. Loading @@ -96,10 +91,6 @@ public class Dependency { * Key for getting a Handler for receiving time tick broadcasts on. */ public static final String TIME_TICK_HANDLER_NAME = "time_tick_handler"; /** * Generic handler on the main thread. */ private static final String MAIN_HANDLER_NAME = "main_handler"; /** * An email address to send memory leak reports to by default. Loading @@ -121,11 +112,6 @@ public class Dependency { */ public static final DependencyKey<Handler> TIME_TICK_HANDLER = new DependencyKey<>(TIME_TICK_HANDLER_NAME); /** * Generic handler on the main thread. */ public static final DependencyKey<Handler> MAIN_HANDLER = new DependencyKey<>(MAIN_HANDLER_NAME); private final ArrayMap<Object, Object> mDependencies = new ArrayMap<>(); private final ArrayMap<Object, LazyDependencyCreator> mProviders = new ArrayMap<>(); Loading @@ -134,7 +120,6 @@ public class Dependency { @Inject Lazy<BroadcastDispatcher> mBroadcastDispatcher; @Inject Lazy<BluetoothController> mBluetoothController; @Inject Lazy<FlashlightController> mFlashlightController; @Inject Lazy<KeyguardUpdateMonitor> mKeyguardUpdateMonitor; @Inject Lazy<DeviceProvisionedController> mDeviceProvisionedController; @Inject Lazy<PluginManager> mPluginManager; Loading @@ -150,15 +135,10 @@ public class Dependency { @Inject Lazy<LightBarController> mLightBarController; @Inject Lazy<OverviewProxyService> mOverviewProxyService; @Inject Lazy<NavigationModeController> mNavBarModeController; @Inject Lazy<AccessibilityButtonModeObserver> mAccessibilityButtonModeObserver; @Inject Lazy<AccessibilityButtonTargetsObserver> mAccessibilityButtonListController; @Inject Lazy<IStatusBarService> mIStatusBarService; @Inject Lazy<NotificationRemoteInputManager.Callback> mNotificationRemoteInputManagerCallback; @Inject Lazy<NavigationBarController> mNavigationBarController; @Inject Lazy<StatusBarStateController> mStatusBarStateController; @Inject Lazy<NotificationMediaManager> mNotificationMediaManager; @Inject @Background Lazy<Looper> mBgLooper; @Inject @Main Lazy<Handler> mMainHandler; @Inject @Named(TIME_TICK_HANDLER_NAME) Lazy<Handler> mTimeTickHandler; @Inject Lazy<SysUiState> mSysUiStateFlagsContainer; @Inject Lazy<CommandQueue> mCommandQueue; Loading Loading @@ -187,10 +167,8 @@ public class Dependency { // on imports. mProviders.put(TIME_TICK_HANDLER, mTimeTickHandler::get); mProviders.put(BG_LOOPER, mBgLooper::get); mProviders.put(MAIN_HANDLER, mMainHandler::get); mProviders.put(BroadcastDispatcher.class, mBroadcastDispatcher::get); mProviders.put(BluetoothController.class, mBluetoothController::get); mProviders.put(FlashlightController.class, mFlashlightController::get); mProviders.put(KeyguardUpdateMonitor.class, mKeyguardUpdateMonitor::get); mProviders.put(DeviceProvisionedController.class, mDeviceProvisionedController::get); mProviders.put(PluginManager.class, mPluginManager::get); Loading @@ -205,13 +183,6 @@ public class Dependency { mProviders.put(LightBarController.class, mLightBarController::get); mProviders.put(OverviewProxyService.class, mOverviewProxyService::get); mProviders.put(NavigationModeController.class, mNavBarModeController::get); mProviders.put(AccessibilityButtonModeObserver.class, mAccessibilityButtonModeObserver::get); mProviders.put(AccessibilityButtonTargetsObserver.class, mAccessibilityButtonListController::get); mProviders.put(IStatusBarService.class, mIStatusBarService::get); mProviders.put(NotificationRemoteInputManager.Callback.class, mNotificationRemoteInputManagerCallback::get); mProviders.put(NavigationBarController.class, mNavigationBarController::get); mProviders.put(StatusBarStateController.class, mStatusBarStateController::get); mProviders.put(NotificationMediaManager.class, mNotificationMediaManager::get); Loading packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java +7 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.navigationbar; import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU; import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_GESTURE; import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR; import static com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler.DEBUG_MISSING_GESTURE_TAG; import static com.android.systemui.shared.recents.utilities.Utilities.isLargeScreen; import static com.android.wm.shell.Flags.enableTaskbarNavbarUnification; Loading @@ -28,7 +29,6 @@ import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.hardware.display.DisplayManager; import android.os.Bundle; import android.os.Handler; import android.os.RemoteException; import android.os.Trace; import android.os.UserHandle; Loading Loading @@ -70,9 +70,11 @@ import dalvik.annotation.optimization.NeverCompile; import java.io.PrintWriter; import java.util.Optional; import java.util.concurrent.Executor; import javax.inject.Inject; @SysUISingleton public class NavigationBarControllerImpl implements ConfigurationController.ConfigurationListener, Loading @@ -82,7 +84,7 @@ public class NavigationBarControllerImpl implements private static final String TAG = NavigationBarControllerImpl.class.getSimpleName(); private final Context mContext; private final Handler mHandler; private final Executor mExecutor; private final NavigationBarComponent.Factory mNavigationBarComponentFactory; private final SecureSettings mSecureSettings; private final DisplayTracker mDisplayTracker; Loading Loading @@ -119,7 +121,7 @@ public class NavigationBarControllerImpl implements NavigationModeController navigationModeController, SysUiState sysUiFlagsContainer, CommandQueue commandQueue, @Main Handler mainHandler, @Main Executor mainExecutor, ConfigurationController configurationController, NavBarHelper navBarHelper, TaskbarDelegate taskbarDelegate, Loading @@ -133,7 +135,7 @@ public class NavigationBarControllerImpl implements SecureSettings secureSettings, DisplayTracker displayTracker) { mContext = context; mHandler = mainHandler; mExecutor = mainExecutor; mNavigationBarComponentFactory = navigationBarComponentFactory; mSecureSettings = secureSettings; mDisplayTracker = displayTracker; Loading Loading @@ -193,7 +195,7 @@ public class NavigationBarControllerImpl implements mNavMode = mode; updateAccessibilityButtonModeIfNeeded(); mHandler.post(() -> { mExecutor.execute(() -> { // create/destroy nav bar based on nav mode only in unfolded state if (oldMode != mNavMode) { updateNavbarForTaskbar(); Loading packages/SystemUI/tests/src/com/android/systemui/DependencyTest.java +7 −6 Original line number Diff line number Diff line Loading @@ -15,14 +15,11 @@ package com.android.systemui; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import android.os.Looper; import androidx.test.filters.SmallTest; import com.android.systemui.statusbar.policy.FlashlightController; import org.junit.Assert; import org.junit.Test; Loading @@ -33,9 +30,9 @@ public class DependencyTest extends SysuiTestCase { @Test public void testClassDependency() { FlashlightController f = mock(FlashlightController.class); mDependency.injectTestDependency(FlashlightController.class, f); Assert.assertEquals(f, Dependency.get(FlashlightController.class)); FakeClass f = new FakeClass(); mDependency.injectTestDependency(FakeClass.class, f); Assert.assertEquals(f, Dependency.get(FakeClass.class)); } @Test Loading @@ -53,4 +50,8 @@ public class DependencyTest extends SysuiTestCase { Dependency dependency = initializer.getSysUIComponent().createDependency(); dependency.start(); } private static class FakeClass { } } packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuControllerTest.java +33 −48 Original line number Diff line number Diff line Loading @@ -22,10 +22,9 @@ import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGAT import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.ActivityManager; import android.content.Context; import android.content.ContextWrapper; import android.hardware.display.DisplayManager; Loading Loading @@ -75,13 +74,13 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { private AccessibilityManager mAccessibilityManager; private KeyguardUpdateMonitor mKeyguardUpdateMonitor; private AccessibilityFloatingMenuController mController; @Mock private AccessibilityButtonTargetsObserver mTargetsObserver; @Mock private AccessibilityButtonModeObserver mModeObserver; @Captor private ArgumentCaptor<KeyguardUpdateMonitorCallback> mKeyguardCallbackCaptor; private KeyguardUpdateMonitorCallback mKeyguardCallback; private int mLastButtonMode; private String mLastButtonTargets; @Mock private SecureSettings mSecureSettings; Loading @@ -97,10 +96,14 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { mWindowManager = mContext.getSystemService(WindowManager.class); mAccessibilityManager = mContext.getSystemService(AccessibilityManager.class); mLastButtonTargets = Settings.Secure.getStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, UserHandle.USER_CURRENT); mLastButtonMode = Settings.Secure.getIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, UserHandle.USER_CURRENT); when(mTargetsObserver.getCurrentAccessibilityButtonTargets()) .thenReturn(Settings.Secure.getStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, UserHandle.USER_CURRENT)); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(Settings.Secure.getIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, UserHandle.USER_CURRENT)); } @After Loading @@ -109,13 +112,6 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { mController.onAccessibilityButtonTargetsChanged(""); mController = null; } Settings.Secure.putStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, mLastButtonTargets, UserHandle.USER_CURRENT); Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, mLastButtonMode, UserHandle.USER_CURRENT); } @Test Loading Loading @@ -227,9 +223,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonModeChanged_floatingModeAndHasButtonTargets_showWidget() { Settings.Secure.putStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, TEST_A11Y_BTN_TARGETS, ActivityManager.getCurrentUser()); when(mTargetsObserver.getCurrentAccessibilityButtonTargets()) .thenReturn(TEST_A11Y_BTN_TARGETS); mController = setUpController(); mController.onAccessibilityButtonModeChanged(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU); Loading @@ -239,8 +234,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonModeChanged_floatingModeAndNoButtonTargets_destroyWidget() { Settings.Secure.putStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, "", ActivityManager.getCurrentUser()); when(mTargetsObserver.getCurrentAccessibilityButtonTargets()).thenReturn(""); mController = setUpController(); mController.onAccessibilityButtonModeChanged(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU); Loading @@ -250,9 +245,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonModeChanged_navBarModeAndHasButtonTargets_destroyWidget() { Settings.Secure.putStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, TEST_A11Y_BTN_TARGETS, ActivityManager.getCurrentUser()); when(mTargetsObserver.getCurrentAccessibilityButtonTargets()) .thenReturn(TEST_A11Y_BTN_TARGETS); mController = setUpController(); mController.onAccessibilityButtonModeChanged(ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR); Loading @@ -262,8 +256,7 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonModeChanged_navBarModeAndNoButtonTargets_destroyWidget() { Settings.Secure.putStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, "", ActivityManager.getCurrentUser()); when(mTargetsObserver.getCurrentAccessibilityButtonTargets()).thenReturn(""); mController = setUpController(); mController.onAccessibilityButtonModeChanged(ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR); Loading @@ -273,9 +266,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonTargetsChanged_floatingModeAndHasButtonTargets_showWidget() { Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU, ActivityManager.getCurrentUser()); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU); mController = setUpController(); mController.onAccessibilityButtonTargetsChanged(TEST_A11Y_BTN_TARGETS); Loading @@ -285,9 +277,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonTargetsChanged_floatingModeAndNoButtonTargets_destroyWidget() { Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU, ActivityManager.getCurrentUser()); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU); mController = setUpController(); mController.onAccessibilityButtonTargetsChanged(""); Loading @@ -297,9 +288,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonTargetsChanged_navBarModeAndHasButtonTargets_destroyWidget() { Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR, ActivityManager.getCurrentUser()); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR); mController = setUpController(); mController.onAccessibilityButtonTargetsChanged(TEST_A11Y_BTN_TARGETS); Loading @@ -309,9 +299,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonTargetsChanged_navBarModeAndNoButtonTargets_destroyWidget() { Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR, ActivityManager.getCurrentUser()); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR); mController = setUpController(); mController.onAccessibilityButtonTargetsChanged(""); Loading @@ -321,9 +310,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onTargetsChanged_isFloatingViewLayerControllerCreated() { Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU, UserHandle.USER_CURRENT); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU); mController = setUpController(); mController.onAccessibilityButtonTargetsChanged(TEST_A11Y_BTN_TARGETS); Loading @@ -335,8 +323,6 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { final WindowManager windowManager = mContext.getSystemService(WindowManager.class); final DisplayManager displayManager = mContext.getSystemService(DisplayManager.class); final FakeDisplayTracker displayTracker = new FakeDisplayTracker(mContext); mTargetsObserver = spy(Dependency.get(AccessibilityButtonTargetsObserver.class)); mModeObserver = spy(Dependency.get(AccessibilityButtonModeObserver.class)); mKeyguardUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class); final AccessibilityFloatingMenuController controller = new AccessibilityFloatingMenuController(mContextWrapper, windowManager, Loading @@ -348,12 +334,11 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { } private void enableAccessibilityFloatingMenuConfig() { Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU, ActivityManager.getCurrentUser()); Settings.Secure.putStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, TEST_A11Y_BTN_TARGETS, ActivityManager.getCurrentUser()); when(mTargetsObserver.getCurrentAccessibilityButtonTargets()) .thenReturn(TEST_A11Y_BTN_TARGETS); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU); } private void captureKeyguardUpdateMonitorCallback() { Loading packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java +5 −4 Original line number Diff line number Diff line Loading @@ -43,13 +43,11 @@ import static org.mockito.Mockito.when; import android.content.res.Configuration; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper.RunWithLooper; import android.util.SparseArray; import androidx.test.filters.SmallTest; import com.android.dx.mockito.inline.extended.StaticMockitoSession; import com.android.systemui.Dependency; import com.android.systemui.SysuiTestCase; import com.android.systemui.dump.DumpManager; import com.android.systemui.model.SysUiState; Loading @@ -61,7 +59,9 @@ import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.phone.AutoHideController; import com.android.systemui.statusbar.phone.LightBarController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.settings.SecureSettings; import com.android.systemui.util.time.FakeSystemClock; import com.android.wm.shell.back.BackAnimation; import com.android.wm.shell.pip.Pip; Loading @@ -76,7 +76,6 @@ import java.util.Optional; /** atest NavigationBarControllerTest */ @RunWith(AndroidTestingRunner.class) @RunWithLooper @SmallTest public class NavigationBarControllerImplTest extends SysuiTestCase { Loading @@ -88,6 +87,8 @@ public class NavigationBarControllerImplTest extends SysuiTestCase { private StaticMockitoSession mMockitoSession; private FakeDisplayTracker mDisplayTracker = new FakeDisplayTracker(mContext); private final FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock()); @Mock private CommandQueue mCommandQueue; @Mock Loading @@ -104,7 +105,7 @@ public class NavigationBarControllerImplTest extends SysuiTestCase { mock(NavigationModeController.class), mock(SysUiState.class), mCommandQueue, Dependency.get(Dependency.MAIN_HANDLER), mExecutor, mock(ConfigurationController.class), mock(NavBarHelper.class), mTaskbarDelegate, Loading Loading
packages/SystemUI/src/com/android/systemui/Dependency.java +1 −30 Original line number Diff line number Diff line Loading @@ -22,17 +22,13 @@ import android.util.ArrayMap; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.util.Preconditions; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.accessibility.AccessibilityButtonModeObserver; import com.android.systemui.accessibility.AccessibilityButtonTargetsObserver; import com.android.systemui.animation.DialogTransitionAnimator; import com.android.systemui.assist.AssistManager; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.fragments.FragmentService; Loading @@ -47,7 +43,6 @@ import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.NotificationRemoteInputManager; import com.android.systemui.statusbar.notification.collection.render.GroupExpansionManager; import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager; import com.android.systemui.statusbar.notification.stack.AmbientState; Loading @@ -58,7 +53,6 @@ import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider; import com.android.systemui.statusbar.phone.SystemUIDialogManager; import com.android.systemui.statusbar.policy.BluetoothController; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.FlashlightController; import com.android.systemui.statusbar.window.StatusBarWindowController; import com.android.systemui.tuner.TunablePadding.TunablePaddingService; import com.android.systemui.tuner.TunerService; Loading @@ -70,6 +64,7 @@ import java.util.function.Consumer; import javax.inject.Inject; import javax.inject.Named; /** * Class to handle ugly dependencies throughout sysui until we determine the * long-term dependency injection solution. Loading @@ -96,10 +91,6 @@ public class Dependency { * Key for getting a Handler for receiving time tick broadcasts on. */ public static final String TIME_TICK_HANDLER_NAME = "time_tick_handler"; /** * Generic handler on the main thread. */ private static final String MAIN_HANDLER_NAME = "main_handler"; /** * An email address to send memory leak reports to by default. Loading @@ -121,11 +112,6 @@ public class Dependency { */ public static final DependencyKey<Handler> TIME_TICK_HANDLER = new DependencyKey<>(TIME_TICK_HANDLER_NAME); /** * Generic handler on the main thread. */ public static final DependencyKey<Handler> MAIN_HANDLER = new DependencyKey<>(MAIN_HANDLER_NAME); private final ArrayMap<Object, Object> mDependencies = new ArrayMap<>(); private final ArrayMap<Object, LazyDependencyCreator> mProviders = new ArrayMap<>(); Loading @@ -134,7 +120,6 @@ public class Dependency { @Inject Lazy<BroadcastDispatcher> mBroadcastDispatcher; @Inject Lazy<BluetoothController> mBluetoothController; @Inject Lazy<FlashlightController> mFlashlightController; @Inject Lazy<KeyguardUpdateMonitor> mKeyguardUpdateMonitor; @Inject Lazy<DeviceProvisionedController> mDeviceProvisionedController; @Inject Lazy<PluginManager> mPluginManager; Loading @@ -150,15 +135,10 @@ public class Dependency { @Inject Lazy<LightBarController> mLightBarController; @Inject Lazy<OverviewProxyService> mOverviewProxyService; @Inject Lazy<NavigationModeController> mNavBarModeController; @Inject Lazy<AccessibilityButtonModeObserver> mAccessibilityButtonModeObserver; @Inject Lazy<AccessibilityButtonTargetsObserver> mAccessibilityButtonListController; @Inject Lazy<IStatusBarService> mIStatusBarService; @Inject Lazy<NotificationRemoteInputManager.Callback> mNotificationRemoteInputManagerCallback; @Inject Lazy<NavigationBarController> mNavigationBarController; @Inject Lazy<StatusBarStateController> mStatusBarStateController; @Inject Lazy<NotificationMediaManager> mNotificationMediaManager; @Inject @Background Lazy<Looper> mBgLooper; @Inject @Main Lazy<Handler> mMainHandler; @Inject @Named(TIME_TICK_HANDLER_NAME) Lazy<Handler> mTimeTickHandler; @Inject Lazy<SysUiState> mSysUiStateFlagsContainer; @Inject Lazy<CommandQueue> mCommandQueue; Loading Loading @@ -187,10 +167,8 @@ public class Dependency { // on imports. mProviders.put(TIME_TICK_HANDLER, mTimeTickHandler::get); mProviders.put(BG_LOOPER, mBgLooper::get); mProviders.put(MAIN_HANDLER, mMainHandler::get); mProviders.put(BroadcastDispatcher.class, mBroadcastDispatcher::get); mProviders.put(BluetoothController.class, mBluetoothController::get); mProviders.put(FlashlightController.class, mFlashlightController::get); mProviders.put(KeyguardUpdateMonitor.class, mKeyguardUpdateMonitor::get); mProviders.put(DeviceProvisionedController.class, mDeviceProvisionedController::get); mProviders.put(PluginManager.class, mPluginManager::get); Loading @@ -205,13 +183,6 @@ public class Dependency { mProviders.put(LightBarController.class, mLightBarController::get); mProviders.put(OverviewProxyService.class, mOverviewProxyService::get); mProviders.put(NavigationModeController.class, mNavBarModeController::get); mProviders.put(AccessibilityButtonModeObserver.class, mAccessibilityButtonModeObserver::get); mProviders.put(AccessibilityButtonTargetsObserver.class, mAccessibilityButtonListController::get); mProviders.put(IStatusBarService.class, mIStatusBarService::get); mProviders.put(NotificationRemoteInputManager.Callback.class, mNotificationRemoteInputManagerCallback::get); mProviders.put(NavigationBarController.class, mNavigationBarController::get); mProviders.put(StatusBarStateController.class, mStatusBarStateController::get); mProviders.put(NotificationMediaManager.class, mNotificationMediaManager::get); Loading
packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarControllerImpl.java +7 −5 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.navigationbar; import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU; import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_GESTURE; import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR; import static com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler.DEBUG_MISSING_GESTURE_TAG; import static com.android.systemui.shared.recents.utilities.Utilities.isLargeScreen; import static com.android.wm.shell.Flags.enableTaskbarNavbarUnification; Loading @@ -28,7 +29,6 @@ import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.hardware.display.DisplayManager; import android.os.Bundle; import android.os.Handler; import android.os.RemoteException; import android.os.Trace; import android.os.UserHandle; Loading Loading @@ -70,9 +70,11 @@ import dalvik.annotation.optimization.NeverCompile; import java.io.PrintWriter; import java.util.Optional; import java.util.concurrent.Executor; import javax.inject.Inject; @SysUISingleton public class NavigationBarControllerImpl implements ConfigurationController.ConfigurationListener, Loading @@ -82,7 +84,7 @@ public class NavigationBarControllerImpl implements private static final String TAG = NavigationBarControllerImpl.class.getSimpleName(); private final Context mContext; private final Handler mHandler; private final Executor mExecutor; private final NavigationBarComponent.Factory mNavigationBarComponentFactory; private final SecureSettings mSecureSettings; private final DisplayTracker mDisplayTracker; Loading Loading @@ -119,7 +121,7 @@ public class NavigationBarControllerImpl implements NavigationModeController navigationModeController, SysUiState sysUiFlagsContainer, CommandQueue commandQueue, @Main Handler mainHandler, @Main Executor mainExecutor, ConfigurationController configurationController, NavBarHelper navBarHelper, TaskbarDelegate taskbarDelegate, Loading @@ -133,7 +135,7 @@ public class NavigationBarControllerImpl implements SecureSettings secureSettings, DisplayTracker displayTracker) { mContext = context; mHandler = mainHandler; mExecutor = mainExecutor; mNavigationBarComponentFactory = navigationBarComponentFactory; mSecureSettings = secureSettings; mDisplayTracker = displayTracker; Loading Loading @@ -193,7 +195,7 @@ public class NavigationBarControllerImpl implements mNavMode = mode; updateAccessibilityButtonModeIfNeeded(); mHandler.post(() -> { mExecutor.execute(() -> { // create/destroy nav bar based on nav mode only in unfolded state if (oldMode != mNavMode) { updateNavbarForTaskbar(); Loading
packages/SystemUI/tests/src/com/android/systemui/DependencyTest.java +7 −6 Original line number Diff line number Diff line Loading @@ -15,14 +15,11 @@ package com.android.systemui; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import android.os.Looper; import androidx.test.filters.SmallTest; import com.android.systemui.statusbar.policy.FlashlightController; import org.junit.Assert; import org.junit.Test; Loading @@ -33,9 +30,9 @@ public class DependencyTest extends SysuiTestCase { @Test public void testClassDependency() { FlashlightController f = mock(FlashlightController.class); mDependency.injectTestDependency(FlashlightController.class, f); Assert.assertEquals(f, Dependency.get(FlashlightController.class)); FakeClass f = new FakeClass(); mDependency.injectTestDependency(FakeClass.class, f); Assert.assertEquals(f, Dependency.get(FakeClass.class)); } @Test Loading @@ -53,4 +50,8 @@ public class DependencyTest extends SysuiTestCase { Dependency dependency = initializer.getSysUIComponent().createDependency(); dependency.start(); } private static class FakeClass { } }
packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuControllerTest.java +33 −48 Original line number Diff line number Diff line Loading @@ -22,10 +22,9 @@ import static android.provider.Settings.Secure.ACCESSIBILITY_BUTTON_MODE_NAVIGAT import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.ActivityManager; import android.content.Context; import android.content.ContextWrapper; import android.hardware.display.DisplayManager; Loading Loading @@ -75,13 +74,13 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { private AccessibilityManager mAccessibilityManager; private KeyguardUpdateMonitor mKeyguardUpdateMonitor; private AccessibilityFloatingMenuController mController; @Mock private AccessibilityButtonTargetsObserver mTargetsObserver; @Mock private AccessibilityButtonModeObserver mModeObserver; @Captor private ArgumentCaptor<KeyguardUpdateMonitorCallback> mKeyguardCallbackCaptor; private KeyguardUpdateMonitorCallback mKeyguardCallback; private int mLastButtonMode; private String mLastButtonTargets; @Mock private SecureSettings mSecureSettings; Loading @@ -97,10 +96,14 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { mWindowManager = mContext.getSystemService(WindowManager.class); mAccessibilityManager = mContext.getSystemService(AccessibilityManager.class); mLastButtonTargets = Settings.Secure.getStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, UserHandle.USER_CURRENT); mLastButtonMode = Settings.Secure.getIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, UserHandle.USER_CURRENT); when(mTargetsObserver.getCurrentAccessibilityButtonTargets()) .thenReturn(Settings.Secure.getStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, UserHandle.USER_CURRENT)); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(Settings.Secure.getIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, UserHandle.USER_CURRENT)); } @After Loading @@ -109,13 +112,6 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { mController.onAccessibilityButtonTargetsChanged(""); mController = null; } Settings.Secure.putStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, mLastButtonTargets, UserHandle.USER_CURRENT); Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, mLastButtonMode, UserHandle.USER_CURRENT); } @Test Loading Loading @@ -227,9 +223,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonModeChanged_floatingModeAndHasButtonTargets_showWidget() { Settings.Secure.putStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, TEST_A11Y_BTN_TARGETS, ActivityManager.getCurrentUser()); when(mTargetsObserver.getCurrentAccessibilityButtonTargets()) .thenReturn(TEST_A11Y_BTN_TARGETS); mController = setUpController(); mController.onAccessibilityButtonModeChanged(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU); Loading @@ -239,8 +234,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonModeChanged_floatingModeAndNoButtonTargets_destroyWidget() { Settings.Secure.putStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, "", ActivityManager.getCurrentUser()); when(mTargetsObserver.getCurrentAccessibilityButtonTargets()).thenReturn(""); mController = setUpController(); mController.onAccessibilityButtonModeChanged(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU); Loading @@ -250,9 +245,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonModeChanged_navBarModeAndHasButtonTargets_destroyWidget() { Settings.Secure.putStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, TEST_A11Y_BTN_TARGETS, ActivityManager.getCurrentUser()); when(mTargetsObserver.getCurrentAccessibilityButtonTargets()) .thenReturn(TEST_A11Y_BTN_TARGETS); mController = setUpController(); mController.onAccessibilityButtonModeChanged(ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR); Loading @@ -262,8 +256,7 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonModeChanged_navBarModeAndNoButtonTargets_destroyWidget() { Settings.Secure.putStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, "", ActivityManager.getCurrentUser()); when(mTargetsObserver.getCurrentAccessibilityButtonTargets()).thenReturn(""); mController = setUpController(); mController.onAccessibilityButtonModeChanged(ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR); Loading @@ -273,9 +266,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonTargetsChanged_floatingModeAndHasButtonTargets_showWidget() { Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU, ActivityManager.getCurrentUser()); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU); mController = setUpController(); mController.onAccessibilityButtonTargetsChanged(TEST_A11Y_BTN_TARGETS); Loading @@ -285,9 +277,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonTargetsChanged_floatingModeAndNoButtonTargets_destroyWidget() { Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU, ActivityManager.getCurrentUser()); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU); mController = setUpController(); mController.onAccessibilityButtonTargetsChanged(""); Loading @@ -297,9 +288,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonTargetsChanged_navBarModeAndHasButtonTargets_destroyWidget() { Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR, ActivityManager.getCurrentUser()); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR); mController = setUpController(); mController.onAccessibilityButtonTargetsChanged(TEST_A11Y_BTN_TARGETS); Loading @@ -309,9 +299,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onAccessibilityButtonTargetsChanged_navBarModeAndNoButtonTargets_destroyWidget() { Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR, ActivityManager.getCurrentUser()); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(ACCESSIBILITY_BUTTON_MODE_NAVIGATION_BAR); mController = setUpController(); mController.onAccessibilityButtonTargetsChanged(""); Loading @@ -321,9 +310,8 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { @Test public void onTargetsChanged_isFloatingViewLayerControllerCreated() { Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU, UserHandle.USER_CURRENT); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU); mController = setUpController(); mController.onAccessibilityButtonTargetsChanged(TEST_A11Y_BTN_TARGETS); Loading @@ -335,8 +323,6 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { final WindowManager windowManager = mContext.getSystemService(WindowManager.class); final DisplayManager displayManager = mContext.getSystemService(DisplayManager.class); final FakeDisplayTracker displayTracker = new FakeDisplayTracker(mContext); mTargetsObserver = spy(Dependency.get(AccessibilityButtonTargetsObserver.class)); mModeObserver = spy(Dependency.get(AccessibilityButtonModeObserver.class)); mKeyguardUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class); final AccessibilityFloatingMenuController controller = new AccessibilityFloatingMenuController(mContextWrapper, windowManager, Loading @@ -348,12 +334,11 @@ public class AccessibilityFloatingMenuControllerTest extends SysuiTestCase { } private void enableAccessibilityFloatingMenuConfig() { Settings.Secure.putIntForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_MODE, ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU, ActivityManager.getCurrentUser()); Settings.Secure.putStringForUser(mContextWrapper.getContentResolver(), Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS, TEST_A11Y_BTN_TARGETS, ActivityManager.getCurrentUser()); when(mTargetsObserver.getCurrentAccessibilityButtonTargets()) .thenReturn(TEST_A11Y_BTN_TARGETS); when(mModeObserver.getCurrentAccessibilityButtonMode()) .thenReturn(ACCESSIBILITY_BUTTON_MODE_FLOATING_MENU); } private void captureKeyguardUpdateMonitorCallback() { Loading
packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerImplTest.java +5 −4 Original line number Diff line number Diff line Loading @@ -43,13 +43,11 @@ import static org.mockito.Mockito.when; import android.content.res.Configuration; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper.RunWithLooper; import android.util.SparseArray; import androidx.test.filters.SmallTest; import com.android.dx.mockito.inline.extended.StaticMockitoSession; import com.android.systemui.Dependency; import com.android.systemui.SysuiTestCase; import com.android.systemui.dump.DumpManager; import com.android.systemui.model.SysUiState; Loading @@ -61,7 +59,9 @@ import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.phone.AutoHideController; import com.android.systemui.statusbar.phone.LightBarController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.settings.SecureSettings; import com.android.systemui.util.time.FakeSystemClock; import com.android.wm.shell.back.BackAnimation; import com.android.wm.shell.pip.Pip; Loading @@ -76,7 +76,6 @@ import java.util.Optional; /** atest NavigationBarControllerTest */ @RunWith(AndroidTestingRunner.class) @RunWithLooper @SmallTest public class NavigationBarControllerImplTest extends SysuiTestCase { Loading @@ -88,6 +87,8 @@ public class NavigationBarControllerImplTest extends SysuiTestCase { private StaticMockitoSession mMockitoSession; private FakeDisplayTracker mDisplayTracker = new FakeDisplayTracker(mContext); private final FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock()); @Mock private CommandQueue mCommandQueue; @Mock Loading @@ -104,7 +105,7 @@ public class NavigationBarControllerImplTest extends SysuiTestCase { mock(NavigationModeController.class), mock(SysUiState.class), mCommandQueue, Dependency.get(Dependency.MAIN_HANDLER), mExecutor, mock(ConfigurationController.class), mock(NavBarHelper.class), mTaskbarDelegate, Loading