Use LocalService to access UserManagerServcie from DragState.

It allows us to replace UserManagerServcie with a mock when writing
tests for DragState.

Bug: 70601660
Test: com.android.server.wm.DragDropControllerTests,
      android.server.wm.CrossAppDragAndDropTests,
      manually check the drag and drop behavior on test app.

Change-Id: I2db9cbe1e1b3542ecd7d60b26fc0e7b322041eb4
This commit is contained in:
Daichi Hirono
2017-12-15 09:49:18 +09:00
parent 0be794a14c
commit 01b645072c

View File

@@ -42,6 +42,7 @@ import android.os.ServiceManager;
import android.os.UserHandle;
import android.os.UserManager;
import android.os.IUserManager;
import android.os.UserManagerInternal;
import android.util.Slog;
import android.view.Display;
import android.view.DragEvent;
@@ -55,6 +56,7 @@ import android.view.animation.DecelerateInterpolator;
import android.view.animation.Interpolator;
import com.android.internal.view.IDragAndDropPermissions;
import com.android.server.LocalServices;
import com.android.server.input.InputApplicationHandle;
import com.android.server.input.InputWindowHandle;
@@ -318,15 +320,9 @@ class DragState {
mSourceUserId = UserHandle.getUserId(mUid);
final IUserManager userManager =
(IUserManager) ServiceManager.getService(Context.USER_SERVICE);
try {
mCrossProfileCopyAllowed = !userManager.getUserRestrictions(mSourceUserId).getBoolean(
UserManager.DISALLOW_CROSS_PROFILE_COPY_PASTE);
} catch (RemoteException e) {
Slog.e(TAG_WM, "Remote Exception calling UserManager: " + e);
mCrossProfileCopyAllowed = false;
}
final UserManagerInternal userManager = LocalServices.getService(UserManagerInternal.class);
mCrossProfileCopyAllowed = !userManager.getUserRestriction(
mSourceUserId, UserManager.DISALLOW_CROSS_PROFILE_COPY_PASTE);
if (DEBUG_DRAG) {
Slog.d(TAG_WM, "broadcasting DRAG_STARTED at (" + touchX + ", " + touchY + ")");