diff options
18 files changed, 47 insertions, 35 deletions
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 8ef708c..a53f5f7 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -1411,12 +1411,13 @@ class ContextImpl extends Context { public boolean bindService(Intent service, ServiceConnection conn, int flags) { warnIfCallingFromSystemProcess(); - return bindService(service, conn, flags, UserHandle.getUserId(Process.myUid())); + return bindServiceAsUser(service, conn, flags, Process.myUserHandle()); } /** @hide */ @Override - public boolean bindService(Intent service, ServiceConnection conn, int flags, int userHandle) { + public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, + UserHandle user) { IServiceConnection sd; if (conn == null) { throw new IllegalArgumentException("connection is null"); @@ -1438,7 +1439,7 @@ class ContextImpl extends Context { int res = ActivityManagerNative.getDefault().bindService( mMainThread.getApplicationThread(), getActivityToken(), service, service.resolveTypeIfNeeded(getContentResolver()), - sd, flags, userHandle); + sd, flags, user.getIdentifier()); if (res < 0) { throw new SecurityException( "Not allowed to bind to service " + service); diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 41d470b..907523d 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -1677,7 +1677,7 @@ public abstract class Context { * argument for use by system server and other multi-user aware code. * @hide */ - public boolean bindService(Intent service, ServiceConnection conn, int flags, int userHandle) { + public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, UserHandle user) { throw new RuntimeException("Not implemented. Must override in a subclass."); } diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java index 84ad667..6a61884 100644 --- a/core/java/android/content/ContextWrapper.java +++ b/core/java/android/content/ContextWrapper.java @@ -475,8 +475,9 @@ public class ContextWrapper extends Context { /** @hide */ @Override - public boolean bindService(Intent service, ServiceConnection conn, int flags, int userHandle) { - return mBase.bindService(service, conn, flags, userHandle); + public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, + UserHandle user) { + return mBase.bindServiceAsUser(service, conn, flags, user); } @Override diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java index 71e8083..b5cbdd1 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java @@ -3349,8 +3349,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public void onServiceDisconnected(ComponentName name) {} }; - if (mContext.bindService( - intent, conn, Context.BIND_AUTO_CREATE, UserHandle.USER_CURRENT)) { + if (mContext.bindServiceAsUser( + intent, conn, Context.BIND_AUTO_CREATE, UserHandle.CURRENT)) { mScreenshotConnection = conn; mHandler.postDelayed(mScreenshotTimeout, 10000); } diff --git a/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java b/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java index 830471a..e58eb5b 100644 --- a/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java +++ b/policy/src/com/android/internal/policy/impl/keyguard/FaceUnlock.java @@ -128,10 +128,10 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { if (!mBoundToService) { Log.d(TAG, "Binding to Face Unlock service for user=" + mLockPatternUtils.getCurrentUser()); - mContext.bindService(new Intent(IFaceLockInterface.class.getName()), + mContext.bindServiceAsUser(new Intent(IFaceLockInterface.class.getName()), mConnection, Context.BIND_AUTO_CREATE, - mLockPatternUtils.getCurrentUser()); + new UserHandle(mLockPatternUtils.getCurrentUser())); mBoundToService = true; } else { Log.w(TAG, "Attempt to bind to Face Unlock when already bound"); diff --git a/services/java/com/android/server/AppWidgetServiceImpl.java b/services/java/com/android/server/AppWidgetServiceImpl.java index e1e9eaf..d1829ab 100644 --- a/services/java/com/android/server/AppWidgetServiceImpl.java +++ b/services/java/com/android/server/AppWidgetServiceImpl.java @@ -718,7 +718,8 @@ class AppWidgetServiceImpl { final long token = Binder.clearCallingIdentity(); try { conn = new ServiceConnectionProxy(key, connection); - mContext.bindService(intent, conn, Context.BIND_AUTO_CREATE, userId); + mContext.bindServiceAsUser(intent, conn, Context.BIND_AUTO_CREATE, + new UserHandle(userId)); mBoundRemoteViewsServices.put(key, conn); } finally { Binder.restoreCallingIdentity(token); @@ -806,7 +807,8 @@ class AppWidgetServiceImpl { // RemoteViewsService. final long token = Binder.clearCallingIdentity(); try { - mContext.bindService(intent, conn, Context.BIND_AUTO_CREATE, userId); + mContext.bindServiceAsUser(intent, conn, Context.BIND_AUTO_CREATE, + new UserHandle(userId)); } finally { Binder.restoreCallingIdentity(token); } @@ -1104,7 +1106,8 @@ class AppWidgetServiceImpl { // Bind to the service and call onDataSetChanged() final long token = Binder.clearCallingIdentity(); try { - mContext.bindService(intent, conn, Context.BIND_AUTO_CREATE, userId); + mContext.bindServiceAsUser(intent, conn, Context.BIND_AUTO_CREATE, + new UserHandle(userId)); } finally { Binder.restoreCallingIdentity(token); } diff --git a/services/java/com/android/server/BackupManagerService.java b/services/java/com/android/server/BackupManagerService.java index 7ac314b..88ea1f1 100644 --- a/services/java/com/android/server/BackupManagerService.java +++ b/services/java/com/android/server/BackupManagerService.java @@ -836,8 +836,8 @@ class BackupManagerService extends IBackupManager.Stub { if ((info.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { if (DEBUG) Slog.v(TAG, "Binding to Google transport"); Intent intent = new Intent().setComponent(transportComponent); - context.bindService(intent, mGoogleConnection, Context.BIND_AUTO_CREATE, - UserHandle.USER_OWNER); + context.bindServiceAsUser(intent, mGoogleConnection, Context.BIND_AUTO_CREATE, + UserHandle.OWNER); } else { Slog.w(TAG, "Possible Google transport spoof: ignoring " + info); } diff --git a/services/java/com/android/server/BluetoothManagerService.java b/services/java/com/android/server/BluetoothManagerService.java index 5a2088c..33e712a 100755 --- a/services/java/com/android/server/BluetoothManagerService.java +++ b/services/java/com/android/server/BluetoothManagerService.java @@ -611,8 +611,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub { Message timeoutMsg = mHandler.obtainMessage(MESSAGE_TIMEOUT_BIND); mHandler.sendMessageDelayed(timeoutMsg,TIMEOUT_BIND_MS); Intent i = new Intent(IBluetooth.class.getName()); - if (!mContext.bindService(i, mConnection, - Context.BIND_AUTO_CREATE, UserHandle.USER_CURRENT)) { + if (!mContext.bindServiceAsUser(i, mConnection, + Context.BIND_AUTO_CREATE, UserHandle.CURRENT)) { mHandler.removeMessages(MESSAGE_TIMEOUT_BIND); Log.e(TAG, "fail to bind to: " + IBluetooth.class.getName()); } else { @@ -959,8 +959,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub { mHandler.sendMessageDelayed(timeoutMsg,TIMEOUT_BIND_MS); mConnection.setGetNameAddressOnly(false); Intent i = new Intent(IBluetooth.class.getName()); - if (!mContext.bindService(i, mConnection,Context.BIND_AUTO_CREATE, - UserHandle.USER_CURRENT)) { + if (!mContext.bindServiceAsUser(i, mConnection,Context.BIND_AUTO_CREATE, + UserHandle.CURRENT)) { mHandler.removeMessages(MESSAGE_TIMEOUT_BIND); Log.e(TAG, "Fail to bind to: " + IBluetooth.class.getName()); } else { diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index 91ac1de..e4b3ce4 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -935,7 +935,8 @@ public class InputMethodManagerService extends IInputMethodManager.Stub Slog.e(TAG, "--- bind failed: service = " + service + ", conn = " + conn); return false; } - return mContext.bindService(service, conn, flags, mSettings.getCurrentUserId()); + return mContext.bindServiceAsUser(service, conn, flags, + new UserHandle(mSettings.getCurrentUserId())); } @Override diff --git a/services/java/com/android/server/ServiceWatcher.java b/services/java/com/android/server/ServiceWatcher.java index 2e7c6d1..4a428ae 100644 --- a/services/java/com/android/server/ServiceWatcher.java +++ b/services/java/com/android/server/ServiceWatcher.java @@ -176,8 +176,9 @@ public class ServiceWatcher implements ServiceConnection { mPackageName = packageName; mVersion = version; if (D) Log.d(mTag, "binding " + packageName + " (version " + version + ")"); - mContext.bindService(intent, this, Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND - | Context.BIND_ALLOW_OOM_MANAGEMENT | Context.BIND_NOT_VISIBLE, mCurrentUserId); + mContext.bindServiceAsUser(intent, this, Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND + | Context.BIND_ALLOW_OOM_MANAGEMENT | Context.BIND_NOT_VISIBLE, + new UserHandle(mCurrentUserId)); } public static boolean isSignatureMatch(Signature[] signatures, diff --git a/services/java/com/android/server/TextServicesManagerService.java b/services/java/com/android/server/TextServicesManagerService.java index d0d8428..7dd9988 100644 --- a/services/java/com/android/server/TextServicesManagerService.java +++ b/services/java/com/android/server/TextServicesManagerService.java @@ -248,7 +248,8 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { Slog.e(TAG, "--- bind failed: service = " + service + ", conn = " + conn); return false; } - return mContext.bindService(service, conn, flags, mSettings.getCurrentUserId()); + return mContext.bindServiceAsUser(service, conn, flags, + new UserHandle(mSettings.getCurrentUserId())); } private void unbindServiceLocked() { diff --git a/services/java/com/android/server/WallpaperManagerService.java b/services/java/com/android/server/WallpaperManagerService.java index 21a1956..6823f13 100644 --- a/services/java/com/android/server/WallpaperManagerService.java +++ b/services/java/com/android/server/WallpaperManagerService.java @@ -885,7 +885,8 @@ class WallpaperManagerService extends IWallpaperManager.Stub { Intent.createChooser(new Intent(Intent.ACTION_SET_WALLPAPER), mContext.getText(com.android.internal.R.string.chooser_wallpaper)), 0, null, new UserHandle(serviceUserId))); - if (!mContext.bindService(intent, newConn, Context.BIND_AUTO_CREATE, serviceUserId)) { + if (!mContext.bindServiceAsUser(intent, newConn, Context.BIND_AUTO_CREATE, + new UserHandle(serviceUserId))) { String msg = "Unable to bind service: " + componentName; if (fromUser) { diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java index 3e3e7dc..0725df0 100644 --- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java +++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java @@ -1592,7 +1592,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub { */ public boolean bind() { if (!mIsAutomation && mService == null) { - return mContext.bindService(mIntent, this, Context.BIND_AUTO_CREATE, mUserId); + return mContext.bindServiceAsUser(mIntent, this, Context.BIND_AUTO_CREATE, + new UserHandle(mUserId)); } return false; } diff --git a/services/java/com/android/server/accounts/AccountManagerService.java b/services/java/com/android/server/accounts/AccountManagerService.java index 150df9e..88603dc 100644 --- a/services/java/com/android/server/accounts/AccountManagerService.java +++ b/services/java/com/android/server/accounts/AccountManagerService.java @@ -1903,7 +1903,8 @@ public class AccountManagerService if (Log.isLoggable(TAG, Log.VERBOSE)) { Log.v(TAG, "performing bindService to " + authenticatorInfo.componentName); } - if (!mContext.bindService(intent, this, Context.BIND_AUTO_CREATE, mAccounts.userId)) { + if (!mContext.bindServiceAsUser(intent, this, Context.BIND_AUTO_CREATE, + new UserHandle(mAccounts.userId))) { if (Log.isLoggable(TAG, Log.VERBOSE)) { Log.v(TAG, "bindService to " + authenticatorInfo.componentName + " failed"); } diff --git a/services/java/com/android/server/content/SyncManager.java b/services/java/com/android/server/content/SyncManager.java index cd66cf2..b3f9bf1 100644 --- a/services/java/com/android/server/content/SyncManager.java +++ b/services/java/com/android/server/content/SyncManager.java @@ -1061,10 +1061,10 @@ public class SyncManager { mContext, 0, new Intent(Settings.ACTION_SYNC_SETTINGS), 0, null, new UserHandle(userId))); mBound = true; - final boolean bindResult = mContext.bindService(intent, this, + final boolean bindResult = mContext.bindServiceAsUser(intent, this, Context.BIND_AUTO_CREATE | Context.BIND_NOT_FOREGROUND | Context.BIND_ALLOW_OOM_MANAGEMENT, - mSyncOperation.userId); + new UserHandle(mSyncOperation.userId)); if (!bindResult) { mBound = false; } diff --git a/services/java/com/android/server/dreams/DreamController.java b/services/java/com/android/server/dreams/DreamController.java index 45ae2c5..85ef33e 100644 --- a/services/java/com/android/server/dreams/DreamController.java +++ b/services/java/com/android/server/dreams/DreamController.java @@ -116,8 +116,8 @@ final class DreamController { intent.setComponent(name); intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); try { - if (!mContext.bindService(intent, mCurrentDream, - Context.BIND_AUTO_CREATE, userId)) { + if (!mContext.bindServiceAsUser(intent, mCurrentDream, + Context.BIND_AUTO_CREATE, new UserHandle(userId))) { Slog.e(TAG, "Unable to bind dream service: " + intent); stopDream(); return; diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java index 2238f17..9a925d6 100644 --- a/services/java/com/android/server/pm/PackageManagerService.java +++ b/services/java/com/android/server/pm/PackageManagerService.java @@ -482,8 +482,8 @@ public class PackageManagerService extends IPackageManager.Stub { " DefaultContainerService"); Intent service = new Intent().setComponent(DEFAULT_CONTAINER_COMPONENT); Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT); - if (mContext.bindService(service, mDefContainerConn, - Context.BIND_AUTO_CREATE, UserHandle.USER_OWNER)) { + if (mContext.bindServiceAsUser(service, mDefContainerConn, + Context.BIND_AUTO_CREATE, UserHandle.OWNER)) { Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); mBound = true; return true; @@ -8409,8 +8409,8 @@ public class PackageManagerService extends IPackageManager.Stub { users = new int[] { userId }; } final ClearStorageConnection conn = new ClearStorageConnection(); - if (mContext.bindService( - containerIntent, conn, Context.BIND_AUTO_CREATE, UserHandle.USER_OWNER)) { + if (mContext.bindServiceAsUser( + containerIntent, conn, Context.BIND_AUTO_CREATE, UserHandle.OWNER)) { try { for (int curUser : users) { long timeout = SystemClock.uptimeMillis() + 5000; diff --git a/test-runner/src/android/test/mock/MockContext.java b/test-runner/src/android/test/mock/MockContext.java index 1f815e7..3097811 100644 --- a/test-runner/src/android/test/mock/MockContext.java +++ b/test-runner/src/android/test/mock/MockContext.java @@ -411,7 +411,8 @@ public class MockContext extends Context { /** @hide */ @Override - public boolean bindService(Intent service, ServiceConnection conn, int flags, int userId) { + public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags, + UserHandle user) { throw new UnsupportedOperationException(); } |