Loading packages/MediaComponents/src/com/android/media/MediaController2Impl.java +5 −6 Original line number Diff line number Diff line Loading @@ -118,16 +118,15 @@ public class MediaController2Impl implements MediaController2Provider { @Override public void initialize() { SessionToken2Impl impl = SessionToken2Impl.from(mToken); // TODO(jaewan): More sanity checks. if (impl.getSessionBinder() == null) { if (mToken.getType() == SessionToken2.TYPE_SESSION) { // Session mServiceConnection = null; connectToSession(SessionToken2Impl.from(mToken).getSessionBinder()); } else { // Session service mServiceConnection = new SessionServiceConnection(); connectToService(); } else { // Session mServiceConnection = null; connectToSession(impl.getSessionBinder()); } } Loading packages/MediaComponents/src/com/android/media/MediaSession2Impl.java +4 −4 Original line number Diff line number Diff line Loading @@ -148,10 +148,10 @@ public class MediaSession2Impl implements MediaSession2Provider { + " session services define the same id=" + id); } else if (libraryService != null) { mSessionToken = new SessionToken2Impl(context, Process.myUid(), TYPE_LIBRARY_SERVICE, mContext.getPackageName(), libraryService, id, mSessionStub).getInstance(); mContext.getPackageName(), libraryService, id, null).getInstance(); } else if (sessionService != null) { mSessionToken = new SessionToken2Impl(context, Process.myUid(), TYPE_SESSION_SERVICE, mContext.getPackageName(), sessionService, id, mSessionStub).getInstance(); mContext.getPackageName(), sessionService, id, null).getInstance(); } else { mSessionToken = new SessionToken2Impl(context, Process.myUid(), TYPE_SESSION, mContext.getPackageName(), null, id, mSessionStub).getInstance(); Loading @@ -166,7 +166,7 @@ public class MediaSession2Impl implements MediaSession2Provider { // a session in another package. MediaSessionManager manager = (MediaSessionManager) mContext.getSystemService(Context.MEDIA_SESSION_SERVICE); if (!manager.onSessionCreated(mSessionToken)) { if (!manager.createSession2(mSessionToken)) { throw new IllegalStateException("Session with the same id is already used by" + " another process. Use MediaController2 instead."); } Loading Loading @@ -281,7 +281,7 @@ public class MediaSession2Impl implements MediaSession2Provider { // Stop system service from listening this session first. MediaSessionManager manager = (MediaSessionManager) mContext.getSystemService(Context.MEDIA_SESSION_SERVICE); manager.onSessionDestroyed(mSessionToken); manager.destroySession2(mSessionToken); if (mSessionStub != null) { if (DEBUG) { Loading packages/MediaComponents/src/com/android/media/MediaSession2Stub.java +8 −8 Original line number Diff line number Diff line Loading @@ -126,26 +126,26 @@ public class MediaSession2Stub extends IMediaSession2.Stub { throws RuntimeException { final MediaSession2Impl sessionImpl = getSession(); final Context context = sessionImpl.getContext(); final ControllerInfo request = new ControllerInfo(context, final ControllerInfo controllerInfo = new ControllerInfo(context, Binder.getCallingUid(), Binder.getCallingPid(), callingPackage, caller); sessionImpl.getCallbackExecutor().execute(() -> { final MediaSession2Impl session = mSession.get(); if (session == null) { return; } CommandGroup allowedCommands = session.getCallback().onConnect(request); // Don't reject connection for the request from trusted app. CommandGroup allowedCommands = session.getCallback().onConnect(controllerInfo); // Don't reject connection for the controllerInfo from trusted app. // Otherwise server will fail to retrieve session's information to dispatch // media keys to. boolean accept = allowedCommands != null || request.isTrusted(); ControllerInfoImpl impl = ControllerInfoImpl.from(request); boolean accept = allowedCommands != null || controllerInfo.isTrusted(); ControllerInfoImpl impl = ControllerInfoImpl.from(controllerInfo); if (accept) { if (DEBUG) { Log.d(TAG, "Accepting connection, request=" + request Log.d(TAG, "Accepting connection, controllerInfo=" + controllerInfo + " allowedCommands=" + allowedCommands); } synchronized (mLock) { mControllers.put(impl.getId(), request); mControllers.put(impl.getId(), controllerInfo); } if (allowedCommands == null) { // For trusted apps, send non-null allowed commands to keep connection. Loading Loading @@ -195,7 +195,7 @@ public class MediaSession2Stub extends IMediaSession2.Stub { } } else { if (DEBUG) { Log.d(TAG, "Rejecting connection, request=" + request); Log.d(TAG, "Rejecting connection, controllerInfo=" + controllerInfo); } try { caller.onDisconnected(); Loading packages/MediaComponents/src/com/android/media/MediaSessionService2Impl.java +1 −1 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ public class MediaSessionService2Impl implements MediaSessionService2Provider { public IBinder onBind_impl(Intent intent) { if (MediaSessionService2.SERVICE_INTERFACE.equals(intent.getAction())) { return SessionToken2Impl.from(mSession.getToken()).getSessionBinder().asBinder(); return ((MediaSession2Impl) mSession.getProvider()).getSessionStub().asBinder(); } return null; } Loading packages/MediaComponents/src/com/android/media/SessionToken2Impl.java +6 −15 Original line number Diff line number Diff line Loading @@ -235,8 +235,7 @@ public class SessionToken2Impl implements SessionToken2Provider { + prime * (mUid + prime * (mPackageName.hashCode() + prime * (mId.hashCode() + prime * ((mServiceName != null ? mServiceName.hashCode() : 0) + prime * (mSessionBinder != null ? mSessionBinder.asBinder().hashCode() : 0))))); + prime * (mServiceName != null ? mServiceName.hashCode() : 0)))); } @Override Loading @@ -245,19 +244,11 @@ public class SessionToken2Impl implements SessionToken2Provider { return false; } SessionToken2Impl other = from((SessionToken2) obj); if (mUid != other.mUid || !TextUtils.equals(mPackageName, other.mPackageName) || !TextUtils.equals(mServiceName, other.mServiceName) || !TextUtils.equals(mId, other.mId) || mType != other.mType) { return false; } if (mSessionBinder == other.mSessionBinder) { return true; } else if (mSessionBinder == null || other.mSessionBinder == null) { return false; } return mSessionBinder.asBinder().equals(other.mSessionBinder.asBinder()); return mUid == other.mUid && TextUtils.equals(mPackageName, other.mPackageName) && TextUtils.equals(mServiceName, other.mServiceName) && TextUtils.equals(mId, other.mId) && mType == other.mType; } @Override Loading Loading
packages/MediaComponents/src/com/android/media/MediaController2Impl.java +5 −6 Original line number Diff line number Diff line Loading @@ -118,16 +118,15 @@ public class MediaController2Impl implements MediaController2Provider { @Override public void initialize() { SessionToken2Impl impl = SessionToken2Impl.from(mToken); // TODO(jaewan): More sanity checks. if (impl.getSessionBinder() == null) { if (mToken.getType() == SessionToken2.TYPE_SESSION) { // Session mServiceConnection = null; connectToSession(SessionToken2Impl.from(mToken).getSessionBinder()); } else { // Session service mServiceConnection = new SessionServiceConnection(); connectToService(); } else { // Session mServiceConnection = null; connectToSession(impl.getSessionBinder()); } } Loading
packages/MediaComponents/src/com/android/media/MediaSession2Impl.java +4 −4 Original line number Diff line number Diff line Loading @@ -148,10 +148,10 @@ public class MediaSession2Impl implements MediaSession2Provider { + " session services define the same id=" + id); } else if (libraryService != null) { mSessionToken = new SessionToken2Impl(context, Process.myUid(), TYPE_LIBRARY_SERVICE, mContext.getPackageName(), libraryService, id, mSessionStub).getInstance(); mContext.getPackageName(), libraryService, id, null).getInstance(); } else if (sessionService != null) { mSessionToken = new SessionToken2Impl(context, Process.myUid(), TYPE_SESSION_SERVICE, mContext.getPackageName(), sessionService, id, mSessionStub).getInstance(); mContext.getPackageName(), sessionService, id, null).getInstance(); } else { mSessionToken = new SessionToken2Impl(context, Process.myUid(), TYPE_SESSION, mContext.getPackageName(), null, id, mSessionStub).getInstance(); Loading @@ -166,7 +166,7 @@ public class MediaSession2Impl implements MediaSession2Provider { // a session in another package. MediaSessionManager manager = (MediaSessionManager) mContext.getSystemService(Context.MEDIA_SESSION_SERVICE); if (!manager.onSessionCreated(mSessionToken)) { if (!manager.createSession2(mSessionToken)) { throw new IllegalStateException("Session with the same id is already used by" + " another process. Use MediaController2 instead."); } Loading Loading @@ -281,7 +281,7 @@ public class MediaSession2Impl implements MediaSession2Provider { // Stop system service from listening this session first. MediaSessionManager manager = (MediaSessionManager) mContext.getSystemService(Context.MEDIA_SESSION_SERVICE); manager.onSessionDestroyed(mSessionToken); manager.destroySession2(mSessionToken); if (mSessionStub != null) { if (DEBUG) { Loading
packages/MediaComponents/src/com/android/media/MediaSession2Stub.java +8 −8 Original line number Diff line number Diff line Loading @@ -126,26 +126,26 @@ public class MediaSession2Stub extends IMediaSession2.Stub { throws RuntimeException { final MediaSession2Impl sessionImpl = getSession(); final Context context = sessionImpl.getContext(); final ControllerInfo request = new ControllerInfo(context, final ControllerInfo controllerInfo = new ControllerInfo(context, Binder.getCallingUid(), Binder.getCallingPid(), callingPackage, caller); sessionImpl.getCallbackExecutor().execute(() -> { final MediaSession2Impl session = mSession.get(); if (session == null) { return; } CommandGroup allowedCommands = session.getCallback().onConnect(request); // Don't reject connection for the request from trusted app. CommandGroup allowedCommands = session.getCallback().onConnect(controllerInfo); // Don't reject connection for the controllerInfo from trusted app. // Otherwise server will fail to retrieve session's information to dispatch // media keys to. boolean accept = allowedCommands != null || request.isTrusted(); ControllerInfoImpl impl = ControllerInfoImpl.from(request); boolean accept = allowedCommands != null || controllerInfo.isTrusted(); ControllerInfoImpl impl = ControllerInfoImpl.from(controllerInfo); if (accept) { if (DEBUG) { Log.d(TAG, "Accepting connection, request=" + request Log.d(TAG, "Accepting connection, controllerInfo=" + controllerInfo + " allowedCommands=" + allowedCommands); } synchronized (mLock) { mControllers.put(impl.getId(), request); mControllers.put(impl.getId(), controllerInfo); } if (allowedCommands == null) { // For trusted apps, send non-null allowed commands to keep connection. Loading Loading @@ -195,7 +195,7 @@ public class MediaSession2Stub extends IMediaSession2.Stub { } } else { if (DEBUG) { Log.d(TAG, "Rejecting connection, request=" + request); Log.d(TAG, "Rejecting connection, controllerInfo=" + controllerInfo); } try { caller.onDisconnected(); Loading
packages/MediaComponents/src/com/android/media/MediaSessionService2Impl.java +1 −1 Original line number Diff line number Diff line Loading @@ -103,7 +103,7 @@ public class MediaSessionService2Impl implements MediaSessionService2Provider { public IBinder onBind_impl(Intent intent) { if (MediaSessionService2.SERVICE_INTERFACE.equals(intent.getAction())) { return SessionToken2Impl.from(mSession.getToken()).getSessionBinder().asBinder(); return ((MediaSession2Impl) mSession.getProvider()).getSessionStub().asBinder(); } return null; } Loading
packages/MediaComponents/src/com/android/media/SessionToken2Impl.java +6 −15 Original line number Diff line number Diff line Loading @@ -235,8 +235,7 @@ public class SessionToken2Impl implements SessionToken2Provider { + prime * (mUid + prime * (mPackageName.hashCode() + prime * (mId.hashCode() + prime * ((mServiceName != null ? mServiceName.hashCode() : 0) + prime * (mSessionBinder != null ? mSessionBinder.asBinder().hashCode() : 0))))); + prime * (mServiceName != null ? mServiceName.hashCode() : 0)))); } @Override Loading @@ -245,19 +244,11 @@ public class SessionToken2Impl implements SessionToken2Provider { return false; } SessionToken2Impl other = from((SessionToken2) obj); if (mUid != other.mUid || !TextUtils.equals(mPackageName, other.mPackageName) || !TextUtils.equals(mServiceName, other.mServiceName) || !TextUtils.equals(mId, other.mId) || mType != other.mType) { return false; } if (mSessionBinder == other.mSessionBinder) { return true; } else if (mSessionBinder == null || other.mSessionBinder == null) { return false; } return mSessionBinder.asBinder().equals(other.mSessionBinder.asBinder()); return mUid == other.mUid && TextUtils.equals(mPackageName, other.mPackageName) && TextUtils.equals(mServiceName, other.mServiceName) && TextUtils.equals(mId, other.mId) && mType == other.mType; } @Override Loading