Merge "Adds read/modify permission checks to ImsService"
am: 3e64003641
Change-Id: Ia4cb2c789a13658de86c0a36648a09e7abceb621
This commit is contained in:
@@ -41,6 +41,9 @@ import com.android.ims.internal.IImsServiceFeatureListener;
|
||||
import com.android.ims.internal.IImsUt;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
|
||||
import static android.Manifest.permission.MODIFY_PHONE_STATE;
|
||||
import static android.Manifest.permission.READ_PHONE_STATE;
|
||||
|
||||
/**
|
||||
* Main ImsService implementation, which binds via the Telephony ImsResolver. Services that extend
|
||||
* ImsService must register the service in their AndroidManifest to be detected by the framework.
|
||||
@@ -94,6 +97,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
public void createImsFeature(int slotId, int feature, IImsFeatureStatusCallback c)
|
||||
throws RemoteException {
|
||||
synchronized (mFeatures) {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "createImsFeature");
|
||||
onCreateImsFeatureInternal(slotId, feature, c);
|
||||
}
|
||||
}
|
||||
@@ -101,6 +105,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public void removeImsFeature(int slotId, int feature) throws RemoteException {
|
||||
synchronized (mFeatures) {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "removeImsFeature");
|
||||
onRemoveImsFeatureInternal(slotId, feature);
|
||||
}
|
||||
}
|
||||
@@ -108,6 +113,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public int startSession(int slotId, int featureType, PendingIntent incomingCallIntent,
|
||||
IImsRegistrationListener listener) throws RemoteException {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "startSession");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -120,6 +126,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public void endSession(int slotId, int featureType, int sessionId) throws RemoteException {
|
||||
synchronized (mFeatures) {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "endSession");
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
feature.endSession(sessionId);
|
||||
@@ -130,6 +137,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public boolean isConnected(int slotId, int featureType, int callSessionType, int callType)
|
||||
throws RemoteException {
|
||||
enforceCallingOrSelfPermission(READ_PHONE_STATE, "isConnected");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -141,6 +149,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
|
||||
@Override
|
||||
public boolean isOpened(int slotId, int featureType) throws RemoteException {
|
||||
enforceCallingOrSelfPermission(READ_PHONE_STATE, "isOpened");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -152,6 +161,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
|
||||
@Override
|
||||
public int getFeatureStatus(int slotId, int featureType) throws RemoteException {
|
||||
enforceCallingOrSelfPermission(READ_PHONE_STATE, "getFeatureStatus");
|
||||
int status = ImsFeature.STATE_NOT_AVAILABLE;
|
||||
synchronized (mFeatures) {
|
||||
SparseArray<ImsFeature> featureMap = mFeatures.get(slotId);
|
||||
@@ -168,6 +178,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public void addRegistrationListener(int slotId, int featureType,
|
||||
IImsRegistrationListener listener) throws RemoteException {
|
||||
enforceCallingOrSelfPermission(READ_PHONE_STATE, "addRegistrationListener");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -179,6 +190,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public void removeRegistrationListener(int slotId, int featureType,
|
||||
IImsRegistrationListener listener) throws RemoteException {
|
||||
enforceCallingOrSelfPermission(READ_PHONE_STATE, "removeRegistrationListener");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -190,6 +202,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public ImsCallProfile createCallProfile(int slotId, int featureType, int sessionId,
|
||||
int callSessionType, int callType) throws RemoteException {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "createCallProfile");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -202,6 +215,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public IImsCallSession createCallSession(int slotId, int featureType, int sessionId,
|
||||
ImsCallProfile profile, IImsCallSessionListener listener) throws RemoteException {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "createCallSession");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -214,6 +228,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public IImsCallSession getPendingCallSession(int slotId, int featureType, int sessionId,
|
||||
String callId) throws RemoteException {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "getPendingCallSession");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -226,6 +241,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public IImsUt getUtInterface(int slotId, int featureType)
|
||||
throws RemoteException {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "getUtInterface");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -238,6 +254,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public IImsConfig getConfigInterface(int slotId, int featureType)
|
||||
throws RemoteException {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "getConfigInterface");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -249,6 +266,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
|
||||
@Override
|
||||
public void turnOnIms(int slotId, int featureType) throws RemoteException {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "turnOnIms");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -259,6 +277,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
|
||||
@Override
|
||||
public void turnOffIms(int slotId, int featureType) throws RemoteException {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "turnOffIms");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -270,6 +289,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public IImsEcbm getEcbmInterface(int slotId, int featureType)
|
||||
throws RemoteException {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "getEcbmInterface");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -282,6 +302,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public void setUiTTYMode(int slotId, int featureType, int uiTtyMode, Message onComplete)
|
||||
throws RemoteException {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "setUiTTYMode");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
@@ -293,6 +314,7 @@ public abstract class ImsService extends ImsServiceBase {
|
||||
@Override
|
||||
public IImsMultiEndpoint getMultiEndpointInterface(int slotId, int featureType)
|
||||
throws RemoteException {
|
||||
enforceCallingOrSelfPermission(MODIFY_PHONE_STATE, "getMultiEndpointInterface");
|
||||
synchronized (mFeatures) {
|
||||
MMTelFeature feature = resolveMMTelFeature(slotId, featureType);
|
||||
if (feature != null) {
|
||||
|
||||
Reference in New Issue
Block a user