Loading src/java/com/android/internal/telephony/ims/ImsServiceController.java +20 −17 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ public class ImsServiceController { mIsBinding = false; mIsBound = false; } notifyAllFeaturesRemoved(); cleanupAllFeatures(); cleanUpService(); startDelayedRebindToService(); } Loading Loading @@ -144,7 +144,7 @@ public class ImsServiceController { if (isServiceControllerAvailable()) { mImsServiceControllerBinder.unlinkToDeath(mImsDeathRecipient, 0); } notifyAllFeaturesRemoved(); cleanupAllFeatures(); cleanUpService(); } } Loading Loading @@ -373,6 +373,7 @@ public class ImsServiceController { boolean bindSucceeded = startBindToService(imsServiceIntent, mImsServiceConnection, serviceFlags); if (!bindSucceeded) { mIsBinding = false; mBackoff.notifyFailed(); } return bindSucceeded; Loading Loading @@ -700,8 +701,7 @@ public class ImsServiceController { } // This method should only be called when synchronized on mLock private void removeImsServiceFeature(ImsFeatureConfiguration.FeatureSlotPair featurePair) throws RemoteException { private void removeImsServiceFeature(ImsFeatureConfiguration.FeatureSlotPair featurePair) { if (!isServiceControllerAvailable() || mCallbacks == null) { Log.w(LOG_TAG, "removeImsServiceFeature called with null values."); return; Loading @@ -714,11 +714,18 @@ public class ImsServiceController { if (callbackToRemove != null) { mFeatureStatusCallbacks.remove(callbackToRemove); } removeImsFeature(featurePair.slotId, featurePair.featureType, (callbackToRemove != null ? callbackToRemove.getCallback() : null)); removeImsFeatureBinder(featurePair.slotId, featurePair.featureType); // Signal ImsResolver to change supported ImsFeatures for this ImsServiceController mCallbacks.imsServiceFeatureRemoved(featurePair.slotId, featurePair.featureType, this); try { removeImsFeature(featurePair.slotId, featurePair.featureType, (callbackToRemove != null ? callbackToRemove.getCallback() : null)); } catch (RemoteException e) { // The connection to this ImsService doesn't exist. This may happen if the service // has died and we are removing features. Log.i(LOG_TAG, "Couldn't remove feature {" + featurePair.featureType + "}, connection is down: " + e.getMessage()); } } else { // Don't update ImsService for emergency MMTEL feature. Log.i(LOG_TAG, "doesn't support emergency calling on slot " + featurePair.slotId); Loading Loading @@ -773,19 +780,15 @@ public class ImsServiceController { .findFirst().orElse(null); } private void notifyAllFeaturesRemoved() { if (mCallbacks == null) { Log.w(LOG_TAG, "notifyAllFeaturesRemoved called with invalid callbacks."); return; } private void cleanupAllFeatures() { synchronized (mLock) { for (ImsFeatureConfiguration.FeatureSlotPair feature : mImsFeatures) { if (feature.featureType != ImsFeature.FEATURE_EMERGENCY_MMTEL) { // don't update ImsServiceController for emergency MMTEL. mCallbacks.imsServiceFeatureRemoved(feature.slotId, feature.featureType, this); } sendImsFeatureRemovedCallback(feature.slotId, feature.featureType); // Remove all features and clean up all associated Binders. for (ImsFeatureConfiguration.FeatureSlotPair i : mImsFeatures) { removeImsServiceFeature(i); } // remove all MmTelFeatureConnection callbacks, since we have already sent removed // callback. removeImsServiceFeatureCallbacks(); } } Loading src/java/com/android/internal/telephony/ims/ImsServiceControllerCompat.java +12 −9 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ public class ImsServiceControllerCompat extends ImsServiceController { } @Override protected String getServiceInterface() { protected final String getServiceInterface() { // Return compatibility version of String. return ImsService.SERVICE_INTERFACE; } Loading @@ -70,7 +70,7 @@ public class ImsServiceControllerCompat extends ImsServiceController { * Converts the new command to {@link MMTelFeature#turnOnIms()}. */ @Override public void enableIms(int slotId) { public final void enableIms(int slotId) { MmTelFeatureCompatAdapter adapter = mMmTelCompatAdapters.get(slotId); if (adapter == null) { Log.w(TAG, "enableIms: adapter null for slot :" + slotId); Loading @@ -87,7 +87,7 @@ public class ImsServiceControllerCompat extends ImsServiceController { * Converts the new command to {@link MMTelFeature#turnOffIms()}. */ @Override public void disableIms(int slotId) { public final void disableIms(int slotId) { MmTelFeatureCompatAdapter adapter = mMmTelCompatAdapters.get(slotId); if (adapter == null) { Log.w(TAG, "enableIms: adapter null for slot :" + slotId); Loading @@ -104,7 +104,7 @@ public class ImsServiceControllerCompat extends ImsServiceController { * @return the IImsRegistration that corresponds to the slot id specified. */ @Override public IImsRegistration getRegistration(int slotId) throws RemoteException { public final IImsRegistration getRegistration(int slotId) { ImsRegistrationCompatAdapter adapter = mRegCompatAdapters.get(slotId); if (adapter == null) { Log.w(TAG, "getRegistration: Registration does not exist for slot " + slotId); Loading @@ -117,7 +117,7 @@ public class ImsServiceControllerCompat extends ImsServiceController { * @return the IImsConfig that corresponds to the slot id specified. */ @Override public IImsConfig getConfig(int slotId) throws RemoteException { public final IImsConfig getConfig(int slotId) { ImsConfigCompatAdapter adapter = mConfigCompatAdapters.get(slotId); if (adapter == null) { Log.w(TAG, "getConfig: Config does not exist for slot " + slotId); Loading @@ -127,13 +127,14 @@ public class ImsServiceControllerCompat extends ImsServiceController { } @Override protected void notifyImsServiceReady() throws RemoteException { protected final void notifyImsServiceReady() { Log.d(TAG, "notifyImsServiceReady"); // don't do anything for compat impl. } @Override protected IInterface createImsFeature(int slotId, int featureType, IImsFeatureStatusCallback c) protected final IInterface createImsFeature(int slotId, int featureType, IImsFeatureStatusCallback c) throws RemoteException { switch (featureType) { case ImsFeature.MMTEL: { Loading @@ -148,15 +149,17 @@ public class ImsServiceControllerCompat extends ImsServiceController { } @Override protected void removeImsFeature(int slotId, int featureType, IImsFeatureStatusCallback c) protected final void removeImsFeature(int slotId, int featureType, IImsFeatureStatusCallback c) throws RemoteException { if (featureType == ImsFeature.MMTEL) { mMmTelCompatAdapters.remove(slotId); mRegCompatAdapters.remove(slotId); mConfigCompatAdapters.remove(slotId); } if (mServiceController != null) { mServiceController.removeImsFeature(slotId, featureType, c); } } @Override protected void setServiceController(IBinder serviceController) { Loading src/java/com/android/internal/telephony/ims/ImsServiceControllerStaticCompat.java +7 −3 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceManager; import android.util.Log; Loading Loading @@ -66,8 +65,13 @@ public class ImsServiceControllerStaticCompat extends ImsServiceControllerCompat } @Override protected MmTelInterfaceAdapter getInterface(int slotId, IImsFeatureStatusCallback c) throws RemoteException { // used for add/remove features and cleanup in ImsServiceController. protected boolean isServiceControllerAvailable() { return mImsServiceCompat != null; } @Override protected MmTelInterfaceAdapter getInterface(int slotId, IImsFeatureStatusCallback c) { if (mImsServiceCompat == null) { Log.w(TAG, "getInterface: IImsService returned null."); return null; Loading Loading
src/java/com/android/internal/telephony/ims/ImsServiceController.java +20 −17 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ public class ImsServiceController { mIsBinding = false; mIsBound = false; } notifyAllFeaturesRemoved(); cleanupAllFeatures(); cleanUpService(); startDelayedRebindToService(); } Loading Loading @@ -144,7 +144,7 @@ public class ImsServiceController { if (isServiceControllerAvailable()) { mImsServiceControllerBinder.unlinkToDeath(mImsDeathRecipient, 0); } notifyAllFeaturesRemoved(); cleanupAllFeatures(); cleanUpService(); } } Loading Loading @@ -373,6 +373,7 @@ public class ImsServiceController { boolean bindSucceeded = startBindToService(imsServiceIntent, mImsServiceConnection, serviceFlags); if (!bindSucceeded) { mIsBinding = false; mBackoff.notifyFailed(); } return bindSucceeded; Loading Loading @@ -700,8 +701,7 @@ public class ImsServiceController { } // This method should only be called when synchronized on mLock private void removeImsServiceFeature(ImsFeatureConfiguration.FeatureSlotPair featurePair) throws RemoteException { private void removeImsServiceFeature(ImsFeatureConfiguration.FeatureSlotPair featurePair) { if (!isServiceControllerAvailable() || mCallbacks == null) { Log.w(LOG_TAG, "removeImsServiceFeature called with null values."); return; Loading @@ -714,11 +714,18 @@ public class ImsServiceController { if (callbackToRemove != null) { mFeatureStatusCallbacks.remove(callbackToRemove); } removeImsFeature(featurePair.slotId, featurePair.featureType, (callbackToRemove != null ? callbackToRemove.getCallback() : null)); removeImsFeatureBinder(featurePair.slotId, featurePair.featureType); // Signal ImsResolver to change supported ImsFeatures for this ImsServiceController mCallbacks.imsServiceFeatureRemoved(featurePair.slotId, featurePair.featureType, this); try { removeImsFeature(featurePair.slotId, featurePair.featureType, (callbackToRemove != null ? callbackToRemove.getCallback() : null)); } catch (RemoteException e) { // The connection to this ImsService doesn't exist. This may happen if the service // has died and we are removing features. Log.i(LOG_TAG, "Couldn't remove feature {" + featurePair.featureType + "}, connection is down: " + e.getMessage()); } } else { // Don't update ImsService for emergency MMTEL feature. Log.i(LOG_TAG, "doesn't support emergency calling on slot " + featurePair.slotId); Loading Loading @@ -773,19 +780,15 @@ public class ImsServiceController { .findFirst().orElse(null); } private void notifyAllFeaturesRemoved() { if (mCallbacks == null) { Log.w(LOG_TAG, "notifyAllFeaturesRemoved called with invalid callbacks."); return; } private void cleanupAllFeatures() { synchronized (mLock) { for (ImsFeatureConfiguration.FeatureSlotPair feature : mImsFeatures) { if (feature.featureType != ImsFeature.FEATURE_EMERGENCY_MMTEL) { // don't update ImsServiceController for emergency MMTEL. mCallbacks.imsServiceFeatureRemoved(feature.slotId, feature.featureType, this); } sendImsFeatureRemovedCallback(feature.slotId, feature.featureType); // Remove all features and clean up all associated Binders. for (ImsFeatureConfiguration.FeatureSlotPair i : mImsFeatures) { removeImsServiceFeature(i); } // remove all MmTelFeatureConnection callbacks, since we have already sent removed // callback. removeImsServiceFeatureCallbacks(); } } Loading
src/java/com/android/internal/telephony/ims/ImsServiceControllerCompat.java +12 −9 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ public class ImsServiceControllerCompat extends ImsServiceController { } @Override protected String getServiceInterface() { protected final String getServiceInterface() { // Return compatibility version of String. return ImsService.SERVICE_INTERFACE; } Loading @@ -70,7 +70,7 @@ public class ImsServiceControllerCompat extends ImsServiceController { * Converts the new command to {@link MMTelFeature#turnOnIms()}. */ @Override public void enableIms(int slotId) { public final void enableIms(int slotId) { MmTelFeatureCompatAdapter adapter = mMmTelCompatAdapters.get(slotId); if (adapter == null) { Log.w(TAG, "enableIms: adapter null for slot :" + slotId); Loading @@ -87,7 +87,7 @@ public class ImsServiceControllerCompat extends ImsServiceController { * Converts the new command to {@link MMTelFeature#turnOffIms()}. */ @Override public void disableIms(int slotId) { public final void disableIms(int slotId) { MmTelFeatureCompatAdapter adapter = mMmTelCompatAdapters.get(slotId); if (adapter == null) { Log.w(TAG, "enableIms: adapter null for slot :" + slotId); Loading @@ -104,7 +104,7 @@ public class ImsServiceControllerCompat extends ImsServiceController { * @return the IImsRegistration that corresponds to the slot id specified. */ @Override public IImsRegistration getRegistration(int slotId) throws RemoteException { public final IImsRegistration getRegistration(int slotId) { ImsRegistrationCompatAdapter adapter = mRegCompatAdapters.get(slotId); if (adapter == null) { Log.w(TAG, "getRegistration: Registration does not exist for slot " + slotId); Loading @@ -117,7 +117,7 @@ public class ImsServiceControllerCompat extends ImsServiceController { * @return the IImsConfig that corresponds to the slot id specified. */ @Override public IImsConfig getConfig(int slotId) throws RemoteException { public final IImsConfig getConfig(int slotId) { ImsConfigCompatAdapter adapter = mConfigCompatAdapters.get(slotId); if (adapter == null) { Log.w(TAG, "getConfig: Config does not exist for slot " + slotId); Loading @@ -127,13 +127,14 @@ public class ImsServiceControllerCompat extends ImsServiceController { } @Override protected void notifyImsServiceReady() throws RemoteException { protected final void notifyImsServiceReady() { Log.d(TAG, "notifyImsServiceReady"); // don't do anything for compat impl. } @Override protected IInterface createImsFeature(int slotId, int featureType, IImsFeatureStatusCallback c) protected final IInterface createImsFeature(int slotId, int featureType, IImsFeatureStatusCallback c) throws RemoteException { switch (featureType) { case ImsFeature.MMTEL: { Loading @@ -148,15 +149,17 @@ public class ImsServiceControllerCompat extends ImsServiceController { } @Override protected void removeImsFeature(int slotId, int featureType, IImsFeatureStatusCallback c) protected final void removeImsFeature(int slotId, int featureType, IImsFeatureStatusCallback c) throws RemoteException { if (featureType == ImsFeature.MMTEL) { mMmTelCompatAdapters.remove(slotId); mRegCompatAdapters.remove(slotId); mConfigCompatAdapters.remove(slotId); } if (mServiceController != null) { mServiceController.removeImsFeature(slotId, featureType, c); } } @Override protected void setServiceController(IBinder serviceController) { Loading
src/java/com/android/internal/telephony/ims/ImsServiceControllerStaticCompat.java +7 −3 Original line number Diff line number Diff line Loading @@ -20,7 +20,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceManager; import android.util.Log; Loading Loading @@ -66,8 +65,13 @@ public class ImsServiceControllerStaticCompat extends ImsServiceControllerCompat } @Override protected MmTelInterfaceAdapter getInterface(int slotId, IImsFeatureStatusCallback c) throws RemoteException { // used for add/remove features and cleanup in ImsServiceController. protected boolean isServiceControllerAvailable() { return mImsServiceCompat != null; } @Override protected MmTelInterfaceAdapter getInterface(int slotId, IImsFeatureStatusCallback c) { if (mImsServiceCompat == null) { Log.w(TAG, "getInterface: IImsService returned null."); return null; Loading