Loading telephony/java/android/telephony/ims/ImsServiceProxy.java +33 −6 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.PendingIntent; import android.os.IBinder; import android.os.Message; import android.os.RemoteException; import android.telephony.ims.feature.IMMTelFeature; import android.telephony.ims.feature.IRcsFeature; import android.telephony.ims.feature.ImsFeature; import android.util.Log; Loading @@ -41,9 +42,11 @@ import com.android.ims.internal.IImsUt; * @hide */ public class ImsServiceProxy extends ImsServiceProxyCompat implements IRcsFeature { public class ImsServiceProxy implements IMMTelFeature, IRcsFeature { protected String LOG_TAG = "ImsServiceProxy"; protected final int mSlotId; protected IBinder mBinder; private final int mSupportedFeature; // Start by assuming the proxy is available for usage. Loading Loading @@ -99,13 +102,13 @@ public class ImsServiceProxy extends ImsServiceProxyCompat implements IRcsFeatur }; public ImsServiceProxy(int slotId, IBinder binder, int featureType) { super(slotId, binder); mSlotId = slotId; mBinder = binder; mSupportedFeature = featureType; } public ImsServiceProxy(int slotId, int featureType) { super(slotId, null /*IBinder*/); mSupportedFeature = featureType; this(slotId, null, featureType); } public IImsServiceFeatureListener getListener() { Loading Loading @@ -263,7 +266,10 @@ public class ImsServiceProxy extends ImsServiceProxyCompat implements IRcsFeatur } } @Override /** * @return an integer describing the current Feature Status, defined in * {@link ImsFeature.ImsState}. */ public int getFeatureStatus() { synchronized (mLock) { if (isBinderAlive() && mFeatureStatusCached != null) { Loading Loading @@ -305,7 +311,22 @@ public class ImsServiceProxy extends ImsServiceProxyCompat implements IRcsFeatur mStatusCallback = c; } @Override /** * @return Returns true if the ImsService is ready to take commands, false otherwise. If this * method returns false, it doesn't mean that the Binder connection is not available (use * {@link #isBinderReady()} to check that), but that the ImsService is not accepting commands * at this time. * * For example, for DSDS devices, only one slot can be {@link ImsFeature#STATE_READY} to take * commands at a time, so the other slot must stay at {@link ImsFeature#STATE_NOT_AVAILABLE}. */ public boolean isBinderReady() { return isBinderAlive() && getFeatureStatus() == ImsFeature.STATE_READY; } /** * @return false if the binder connection is no longer alive. */ public boolean isBinderAlive() { return mIsAvailable && mBinder != null && mBinder.isBinderAlive(); } Loading @@ -319,4 +340,10 @@ public class ImsServiceProxy extends ImsServiceProxyCompat implements IRcsFeatur private IImsServiceController getServiceInterface(IBinder b) { return IImsServiceController.Stub.asInterface(b); } protected void checkBinderConnection() throws RemoteException { if (!isBinderAlive()) { throw new RemoteException("ImsServiceProxy is not available for that feature."); } } } telephony/java/android/telephony/ims/ImsServiceProxyCompat.java +4 −32 Original line number Diff line number Diff line Loading @@ -40,16 +40,12 @@ import com.android.ims.internal.IImsUt; * @hide */ public class ImsServiceProxyCompat implements IMMTelFeature { public class ImsServiceProxyCompat extends ImsServiceProxy { private static final int SERVICE_ID = ImsFeature.MMTEL; protected final int mSlotId; protected IBinder mBinder; public ImsServiceProxyCompat(int slotId, IBinder binder) { mSlotId = slotId; mBinder = binder; super(slotId, binder, SERVICE_ID); } @Override Loading Loading @@ -156,41 +152,17 @@ public class ImsServiceProxyCompat implements IMMTelFeature { checkBinderConnection(); return getServiceInterface(mBinder).getMultiEndpointInterface(SERVICE_ID); } /** * Base implementation, always returns READY for compatibility with old ImsService. */ @Override public int getFeatureStatus() { return ImsFeature.STATE_READY; } /** * @return false if the binder connection is no longer alive. */ @Override public boolean isBinderAlive() { return mBinder != null && mBinder.isBinderAlive(); } /** * @return Returns true if the ImsService is ready to take commands, false otherwise. If this * method returns false, it doesn't mean that the Binder connection is not available (use * {@link #isBinderReady()} to check that), but that the ImsService is not accepting commands * at this time. * * For example, for DSDS devices, only one slot can be {@link ImsFeature#STATE_READY} to take * commands at a time, so the other slot must stay at {@link ImsFeature#STATE_NOT_AVAILABLE}. */ public boolean isBinderReady() { return isBinderAlive() && getFeatureStatus() == ImsFeature.STATE_READY; } private IImsService getServiceInterface(IBinder b) { return IImsService.Stub.asInterface(b); } protected void checkBinderConnection() throws RemoteException { if (!isBinderAlive()) { throw new RemoteException("ImsServiceProxy is not available for that feature."); } } } Loading
telephony/java/android/telephony/ims/ImsServiceProxy.java +33 −6 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.PendingIntent; import android.os.IBinder; import android.os.Message; import android.os.RemoteException; import android.telephony.ims.feature.IMMTelFeature; import android.telephony.ims.feature.IRcsFeature; import android.telephony.ims.feature.ImsFeature; import android.util.Log; Loading @@ -41,9 +42,11 @@ import com.android.ims.internal.IImsUt; * @hide */ public class ImsServiceProxy extends ImsServiceProxyCompat implements IRcsFeature { public class ImsServiceProxy implements IMMTelFeature, IRcsFeature { protected String LOG_TAG = "ImsServiceProxy"; protected final int mSlotId; protected IBinder mBinder; private final int mSupportedFeature; // Start by assuming the proxy is available for usage. Loading Loading @@ -99,13 +102,13 @@ public class ImsServiceProxy extends ImsServiceProxyCompat implements IRcsFeatur }; public ImsServiceProxy(int slotId, IBinder binder, int featureType) { super(slotId, binder); mSlotId = slotId; mBinder = binder; mSupportedFeature = featureType; } public ImsServiceProxy(int slotId, int featureType) { super(slotId, null /*IBinder*/); mSupportedFeature = featureType; this(slotId, null, featureType); } public IImsServiceFeatureListener getListener() { Loading Loading @@ -263,7 +266,10 @@ public class ImsServiceProxy extends ImsServiceProxyCompat implements IRcsFeatur } } @Override /** * @return an integer describing the current Feature Status, defined in * {@link ImsFeature.ImsState}. */ public int getFeatureStatus() { synchronized (mLock) { if (isBinderAlive() && mFeatureStatusCached != null) { Loading Loading @@ -305,7 +311,22 @@ public class ImsServiceProxy extends ImsServiceProxyCompat implements IRcsFeatur mStatusCallback = c; } @Override /** * @return Returns true if the ImsService is ready to take commands, false otherwise. If this * method returns false, it doesn't mean that the Binder connection is not available (use * {@link #isBinderReady()} to check that), but that the ImsService is not accepting commands * at this time. * * For example, for DSDS devices, only one slot can be {@link ImsFeature#STATE_READY} to take * commands at a time, so the other slot must stay at {@link ImsFeature#STATE_NOT_AVAILABLE}. */ public boolean isBinderReady() { return isBinderAlive() && getFeatureStatus() == ImsFeature.STATE_READY; } /** * @return false if the binder connection is no longer alive. */ public boolean isBinderAlive() { return mIsAvailable && mBinder != null && mBinder.isBinderAlive(); } Loading @@ -319,4 +340,10 @@ public class ImsServiceProxy extends ImsServiceProxyCompat implements IRcsFeatur private IImsServiceController getServiceInterface(IBinder b) { return IImsServiceController.Stub.asInterface(b); } protected void checkBinderConnection() throws RemoteException { if (!isBinderAlive()) { throw new RemoteException("ImsServiceProxy is not available for that feature."); } } }
telephony/java/android/telephony/ims/ImsServiceProxyCompat.java +4 −32 Original line number Diff line number Diff line Loading @@ -40,16 +40,12 @@ import com.android.ims.internal.IImsUt; * @hide */ public class ImsServiceProxyCompat implements IMMTelFeature { public class ImsServiceProxyCompat extends ImsServiceProxy { private static final int SERVICE_ID = ImsFeature.MMTEL; protected final int mSlotId; protected IBinder mBinder; public ImsServiceProxyCompat(int slotId, IBinder binder) { mSlotId = slotId; mBinder = binder; super(slotId, binder, SERVICE_ID); } @Override Loading Loading @@ -156,41 +152,17 @@ public class ImsServiceProxyCompat implements IMMTelFeature { checkBinderConnection(); return getServiceInterface(mBinder).getMultiEndpointInterface(SERVICE_ID); } /** * Base implementation, always returns READY for compatibility with old ImsService. */ @Override public int getFeatureStatus() { return ImsFeature.STATE_READY; } /** * @return false if the binder connection is no longer alive. */ @Override public boolean isBinderAlive() { return mBinder != null && mBinder.isBinderAlive(); } /** * @return Returns true if the ImsService is ready to take commands, false otherwise. If this * method returns false, it doesn't mean that the Binder connection is not available (use * {@link #isBinderReady()} to check that), but that the ImsService is not accepting commands * at this time. * * For example, for DSDS devices, only one slot can be {@link ImsFeature#STATE_READY} to take * commands at a time, so the other slot must stay at {@link ImsFeature#STATE_NOT_AVAILABLE}. */ public boolean isBinderReady() { return isBinderAlive() && getFeatureStatus() == ImsFeature.STATE_READY; } private IImsService getServiceInterface(IBinder b) { return IImsService.Stub.asInterface(b); } protected void checkBinderConnection() throws RemoteException { if (!isBinderAlive()) { throw new RemoteException("ImsServiceProxy is not available for that feature."); } } }