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:
@@ -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.
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user