diff options
| author | 2022-05-05 09:15:03 +0000 | |
|---|---|---|
| committer | 2022-05-05 09:15:03 +0000 | |
| commit | a7abdb12df672361244d03957b5aab88111cc43f (patch) | |
| tree | fe3e91efbb3148a774e1aed44bde4af13ee7ac02 | |
| parent | 5f937a7093a6a9b8846953f00db94d955dc2a022 (diff) | |
| parent | d20446ce09f4880e1a7e27d9e7ca508cc8062eba (diff) | |
Merge "Use current user Context to generate NavBar layout" into tm-dev
5 files changed, 34 insertions, 12 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java index c7cd48fd5adf..3bb4e6481bd6 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java @@ -125,6 +125,7 @@ import com.android.systemui.navigationbar.gestural.QuickswitchOrientedNavHandle; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.recents.Recents; +import com.android.systemui.settings.UserContextProvider; import com.android.systemui.shared.recents.utilities.Utilities; import com.android.systemui.shared.rotation.RotationButton; import com.android.systemui.shared.rotation.RotationButtonController; @@ -203,6 +204,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements private final UiEventLogger mUiEventLogger; private final NavBarHelper mNavBarHelper; private final NotificationShadeDepthController mNotificationShadeDepthController; + private final UserContextProvider mUserContextProvider; private NavigationBarFrame mFrame; private @WindowVisibleState int mNavigationBarWindowState = WINDOW_STATE_SHOWING; @@ -514,7 +516,8 @@ public class NavigationBar extends ViewController<NavigationBarView> implements DeadZone deadZone, DeviceConfigProxy deviceConfigProxy, NavigationBarTransitions navigationBarTransitions, - Optional<BackAnimation> backAnimation) { + Optional<BackAnimation> backAnimation, + UserContextProvider userContextProvider) { super(navigationBarView); mFrame = navigationBarFrame; mContext = context; @@ -550,6 +553,7 @@ public class NavigationBar extends ViewController<NavigationBarView> implements mAutoHideControllerFactory = autoHideControllerFactory; mTelecomManagerOptional = telecomManagerOptional; mInputMethodManager = inputMethodManager; + mUserContextProvider = userContextProvider; mNavBarMode = mNavigationModeController.addListener(mModeChangedListener); } @@ -1512,35 +1516,36 @@ public class NavigationBar extends ViewController<NavigationBarView> implements int insetsHeight = -1; int gravity = Gravity.BOTTOM; boolean navBarCanMove = true; + final Context userContext = mUserContextProvider.createCurrentUserContext(mContext); if (mWindowManager != null && mWindowManager.getCurrentWindowMetrics() != null) { Rect displaySize = mWindowManager.getCurrentWindowMetrics().getBounds(); navBarCanMove = displaySize.width() != displaySize.height() - && mContext.getResources().getBoolean( + && userContext.getResources().getBoolean( com.android.internal.R.bool.config_navBarCanMove); } if (!navBarCanMove) { - height = mContext.getResources().getDimensionPixelSize( + height = userContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.navigation_bar_frame_height); - insetsHeight = mContext.getResources().getDimensionPixelSize( + insetsHeight = userContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.navigation_bar_height); } else { switch (rotation) { case ROTATION_UNDEFINED: case Surface.ROTATION_0: case Surface.ROTATION_180: - height = mContext.getResources().getDimensionPixelSize( + height = userContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.navigation_bar_frame_height); - insetsHeight = mContext.getResources().getDimensionPixelSize( + insetsHeight = userContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.navigation_bar_height); break; case Surface.ROTATION_90: gravity = Gravity.RIGHT; - width = mContext.getResources().getDimensionPixelSize( + width = userContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.navigation_bar_width); break; case Surface.ROTATION_270: gravity = Gravity.LEFT; - width = mContext.getResources().getDimensionPixelSize( + width = userContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.navigation_bar_width); break; } @@ -1565,12 +1570,12 @@ public class NavigationBar extends ViewController<NavigationBarView> implements lp.providedInternalInsets[ITYPE_NAVIGATION_BAR] = null; } lp.token = new Binder(); - lp.accessibilityTitle = mContext.getString(R.string.nav_bar); + lp.accessibilityTitle = userContext.getString(R.string.nav_bar); lp.privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC | WindowManager.LayoutParams.PRIVATE_FLAG_LAYOUT_SIZE_EXTENDED_BY_CUTOUT; lp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; lp.windowAnimations = 0; - lp.setTitle("NavigationBar" + mContext.getDisplayId()); + lp.setTitle("NavigationBar" + userContext.getDisplayId()); lp.setFitInsetsTypes(0 /* types */); lp.setTrustedOverlay(); return lp; diff --git a/packages/SystemUI/src/com/android/systemui/settings/UserContextProvider.kt b/packages/SystemUI/src/com/android/systemui/settings/UserContextProvider.kt index 27af15222327..dae851252271 100644 --- a/packages/SystemUI/src/com/android/systemui/settings/UserContextProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/settings/UserContextProvider.kt @@ -23,4 +23,10 @@ import android.content.Context */ interface UserContextProvider { val userContext: Context + + /** + * Creates the {@code context} with the current user. + * @see Context#createContextAsUser(UserHandle, int) + */ + fun createCurrentUserContext(context: Context): Context }
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt b/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt index 3a6248b793d0..80d5f1681a79 100644 --- a/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/settings/UserTrackerImpl.kt @@ -127,6 +127,12 @@ class UserTrackerImpl internal constructor( } } + override fun createCurrentUserContext(context: Context): Context { + synchronized(mutex) { + return context.createContextAsUser(userHandle, 0) + } + } + private fun setUserIdInternal(user: Int): Pair<Context, List<UserInfo>> { val profiles = userManager.getProfiles(user) val handle = UserHandle(user) diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java index 3c6aa4803e86..7c303985d651 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java @@ -85,6 +85,7 @@ import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.recents.Recents; +import com.android.systemui.settings.UserContextProvider; import com.android.systemui.settings.UserTracker; import com.android.systemui.shared.rotation.RotationButtonController; import com.android.systemui.statusbar.CommandQueue; @@ -187,6 +188,8 @@ public class NavigationBarTest extends SysuiTestCase { private DeadZone mDeadZone; @Mock private CentralSurfaces mCentralSurfaces; + @Mock + private UserContextProvider mUserContextProvider; private DeviceConfigProxyFake mDeviceConfigProxyFake = new DeviceConfigProxyFake(); @Rule @@ -210,6 +213,8 @@ public class NavigationBarTest extends SysuiTestCase { when(mNavigationBarTransitions.getLightTransitionsController()) .thenReturn(mLightBarTransitionsController); when(mStatusBarKeyguardViewManager.isNavBarVisible()).thenReturn(true); + when(mUserContextProvider.createCurrentUserContext(any(Context.class))) + .thenReturn(mContext); setupSysuiDependency(); // This class inflates views that call Dependency.get, thus these injections are still // necessary. @@ -458,7 +463,8 @@ public class NavigationBarTest extends SysuiTestCase { mDeadZone, mDeviceConfigProxyFake, mNavigationBarTransitions, - Optional.of(mock(BackAnimation.class)))); + Optional.of(mock(BackAnimation.class)), + mUserContextProvider)); } private void processAllMessages() { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImplTest.kt index e9d16a6738ca..64a93cf2c8dc 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/DeviceControlsControllerImplTest.kt @@ -53,7 +53,6 @@ import org.mockito.Mock import org.mockito.Mockito import org.mockito.MockitoAnnotations import org.mockito.Mockito.never -import org.mockito.Mockito.times import org.mockito.Mockito.verify import org.mockito.Mockito.`when` import org.mockito.ArgumentMatchers.anyInt |