Merge "Notify window manager service that we are switching users" into rvc-dev am: 12b5186f28

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11821052

Change-Id: Ibc8f185b563c3f800bfbcba5882859946c85dc88
This commit is contained in:
TreeHugger Robot
2020-06-12 18:32:03 +00:00
committed by Automerger Merge Worker
2 changed files with 21 additions and 2 deletions

View File

@@ -23,9 +23,12 @@ import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.os.Handler; import android.os.Handler;
import android.os.RemoteException;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import android.util.Log;
import android.view.IWindowManager;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
@@ -44,13 +47,14 @@ import javax.inject.Singleton;
*/ */
@Singleton @Singleton
public class UserSwitchTransitionViewController extends OverlayViewController { public class UserSwitchTransitionViewController extends OverlayViewController {
private static final String TAG = "UserSwitchTransitionViewController"; private static final String TAG = "UserSwitchTransition";
private static final String ENABLE_DEVELOPER_MESSAGE_TRUE = "true"; private static final String ENABLE_DEVELOPER_MESSAGE_TRUE = "true";
private final Context mContext; private final Context mContext;
private final Handler mHandler; private final Handler mHandler;
private final Resources mResources; private final Resources mResources;
private final UserManager mUserManager; private final UserManager mUserManager;
private final IWindowManager mWindowManagerService;
@GuardedBy("this") @GuardedBy("this")
private boolean mShowing; private boolean mShowing;
@@ -62,6 +66,7 @@ public class UserSwitchTransitionViewController extends OverlayViewController {
@Main Handler handler, @Main Handler handler,
@Main Resources resources, @Main Resources resources,
UserManager userManager, UserManager userManager,
IWindowManager windowManagerService,
OverlayViewGlobalStateController overlayViewGlobalStateController) { OverlayViewGlobalStateController overlayViewGlobalStateController) {
super(R.id.user_switching_dialog_stub, overlayViewGlobalStateController); super(R.id.user_switching_dialog_stub, overlayViewGlobalStateController);
@@ -70,6 +75,7 @@ public class UserSwitchTransitionViewController extends OverlayViewController {
mHandler = handler; mHandler = handler;
mResources = resources; mResources = resources;
mUserManager = userManager; mUserManager = userManager;
mWindowManagerService = windowManagerService;
} }
/** /**
@@ -81,6 +87,13 @@ public class UserSwitchTransitionViewController extends OverlayViewController {
if (mPreviousUserId == newUserId || mShowing) return; if (mPreviousUserId == newUserId || mShowing) return;
mShowing = true; mShowing = true;
mHandler.post(() -> { mHandler.post(() -> {
try {
mWindowManagerService.setSwitchingUser(true);
mWindowManagerService.lockNow(null);
} catch (RemoteException e) {
Log.e(TAG, "unable to notify window manager service regarding user switch");
}
start(); start();
populateDialog(mPreviousUserId, newUserId); populateDialog(mPreviousUserId, newUserId);
// next time a new user is selected, this current new user will be the previous user. // next time a new user is selected, this current new user will be the previous user.

View File

@@ -28,6 +28,7 @@ import android.test.suitebuilder.annotation.SmallTest;
import android.testing.AndroidTestingRunner; import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper; import android.testing.TestableLooper;
import android.testing.TestableResources; import android.testing.TestableResources;
import android.view.IWindowManager;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
@@ -52,6 +53,8 @@ public class UserSwitchTransitionViewControllerTest extends SysuiTestCase {
private TestableResources mTestableResources; private TestableResources mTestableResources;
@Mock @Mock
private OverlayViewGlobalStateController mOverlayViewGlobalStateController; private OverlayViewGlobalStateController mOverlayViewGlobalStateController;
@Mock
private IWindowManager mWindowManagerService;
@Before @Before
public void setUp() { public void setUp() {
@@ -62,6 +65,7 @@ public class UserSwitchTransitionViewControllerTest extends SysuiTestCase {
Handler.getMain(), Handler.getMain(),
mTestableResources.getResources(), mTestableResources.getResources(),
(UserManager) mContext.getSystemService(Context.USER_SERVICE), (UserManager) mContext.getSystemService(Context.USER_SERVICE),
mWindowManagerService,
mOverlayViewGlobalStateController mOverlayViewGlobalStateController
); );
@@ -125,8 +129,10 @@ public class UserSwitchTransitionViewControllerTest extends SysuiTestCase {
TestableUserSwitchTransitionViewController(Context context, Handler handler, TestableUserSwitchTransitionViewController(Context context, Handler handler,
Resources resources, UserManager userManager, Resources resources, UserManager userManager,
IWindowManager windowManagerService,
OverlayViewGlobalStateController overlayViewGlobalStateController) { OverlayViewGlobalStateController overlayViewGlobalStateController) {
super(context, handler, resources, userManager, overlayViewGlobalStateController); super(context, handler, resources, userManager, windowManagerService,
overlayViewGlobalStateController);
mHandler = handler; mHandler = handler;
} }