Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb21f9ae authored by Charles Chen's avatar Charles Chen Committed by Automerger Merge Worker
Browse files

Merge "Use current user Context to generate NavBar layout" into tm-dev am: a7abdb12

parents dbdf5fd1 a7abdb12
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -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;
+6 −0
Original line number Diff line number Diff line
@@ -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
+6 −0
Original line number Diff line number Diff line
@@ -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)
+7 −1
Original line number Diff line number Diff line
@@ -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() {
+0 −1
Original line number Diff line number Diff line
@@ -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