diff options
author | Tyler Gunn <tgunn@google.com> | 2014-08-15 15:55:20 -0700 |
---|---|---|
committer | Tyler Gunn <tgunn@google.com> | 2014-08-15 15:55:20 -0700 |
commit | 0dae9a4cfa9d51cadb0f731b65f742d48e9e893c (patch) | |
tree | 09f940543bb4cf42f21a654e5a09f18eed6cfcd3 /telecomm/java | |
parent | f0433e50c7855579ad9847e939bb2c84e576e9d0 (diff) | |
download | frameworks_base-0dae9a4cfa9d51cadb0f731b65f742d48e9e893c.zip frameworks_base-0dae9a4cfa9d51cadb0f731b65f742d48e9e893c.tar.gz frameworks_base-0dae9a4cfa9d51cadb0f731b65f742d48e9e893c.tar.bz2 |
Add BIND_CONNECTION_SERVICE permission.
- Added system permission.
- Added enforcement in ConnectionService API class.
Bug: 16171070
Change-Id: Idbd26a31e8f6bb59d3e881a1e5885a44026f2fbd
Diffstat (limited to 'telecomm/java')
-rw-r--r-- | telecomm/java/android/telecomm/ConnectionService.java | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/telecomm/java/android/telecomm/ConnectionService.java b/telecomm/java/android/telecomm/ConnectionService.java index d5e4f1b..5653f5e 100644 --- a/telecomm/java/android/telecomm/ConnectionService.java +++ b/telecomm/java/android/telecomm/ConnectionService.java @@ -16,6 +16,7 @@ package android.telecomm; +import android.Manifest; import android.annotation.SdkConstant; import android.app.PendingIntent; import android.app.Service; @@ -26,6 +27,8 @@ import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; +import android.os.Parcel; +import android.os.RemoteException; import android.telephony.DisconnectCause; import com.android.internal.os.SomeArgs; @@ -45,7 +48,6 @@ import java.util.Map; * Android device. */ public abstract class ConnectionService extends Service { - /** * The {@link Intent} that must be declared as handled by the service. */ @@ -81,6 +83,18 @@ public abstract class ConnectionService extends Service { private final ConnectionServiceAdapter mAdapter = new ConnectionServiceAdapter(); private final IBinder mBinder = new IConnectionService.Stub() { + /** + * Enforces the requirement that all calls into the ConnectionService require the + * {@code BIND_CONNECTION_SERVICE} permission. + */ + @Override + public boolean onTransact(int code, Parcel data, Parcel reply, + int flags) throws RemoteException + { + enforceBindConnectionServicePermission(); + return super.onTransact(code, data, reply, flags); + } + @Override public void addConnectionServiceAdapter(IConnectionServiceAdapter adapter) { mHandler.obtainMessage(MSG_ADD_CONNECTION_SERVICE_ADAPTER, adapter).sendToTarget(); @@ -617,7 +631,8 @@ public abstract class ConnectionService extends Service { public void onError(String request, int code, String reason) { // no-op } - }); + } + ); } private void splitFromConference(String callId) { @@ -830,4 +845,10 @@ public abstract class ConnectionService extends Service { return Connection.getNullConnection(); } + /** + * Enforces the {@code BIND_CONNECTION_SERVICE} permission for connection service calls. + */ + private void enforceBindConnectionServicePermission() { + enforceCallingPermission(Manifest.permission.BIND_CONNECTION_SERVICE, null); + } } |