summaryrefslogtreecommitdiffstats
path: root/telecomm/java
diff options
context:
space:
mode:
authorTyler Gunn <tgunn@google.com>2014-08-15 15:55:20 -0700
committerTyler Gunn <tgunn@google.com>2014-08-15 15:55:20 -0700
commit0dae9a4cfa9d51cadb0f731b65f742d48e9e893c (patch)
tree09f940543bb4cf42f21a654e5a09f18eed6cfcd3 /telecomm/java
parentf0433e50c7855579ad9847e939bb2c84e576e9d0 (diff)
downloadframeworks_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.java25
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);
+ }
}