aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Ebinger <breadley@google.com>2018-03-05 16:39:02 -0800
committerBrad Ebinger <breadley@google.com>2018-03-07 14:01:08 -0800
commitfababe1aca80852c4e816d8cc1d20321d14b9a87 (patch)
tree802884fa4bcbbd17bd44057ac6e9581ca9b24807
parent8806388d69f29f41ebcf05bbdb1bf43cbbc832ba (diff)
downloadims-fababe1aca80852c4e816d8cc1d20321d14b9a87.tar.gz
Dynamic Query for ImsService
1) Fixes ImsManager.Connector bug where we would reset retry count, even if there was an ImsException. 2) ImsManager#isServiceAvailable now uses ImsResolver state to figure out if an ImsService is possibly going to bind/ unbind. Test: Telephony test ImsService, telephony unit tests Bug: 72642524 Change-Id: Iac4de9091c3374970be450930424a22d9158de13
-rw-r--r--src/java/com/android/ims/ImsManager.java25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index 24d92475..a5d4e485 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -340,10 +340,19 @@ public class ImsManager {
private void notifyReady() throws ImsException {
ImsManager manager;
synchronized (mLock) {
- mRetryCount = 0;
manager = mImsManager;
}
- mListener.connectionReady(manager);
+ try {
+ mListener.connectionReady(manager);
+ }
+ catch (ImsException e) {
+ Log.w(TAG, "Connector: notifyReady exception: " + e.getMessage());
+ throw e;
+ }
+ // Only reset retry count if connectionReady does not generate an ImsException/
+ synchronized (mLock) {
+ mRetryCount = 0;
+ }
}
private void notifyNotReady() {
@@ -1418,10 +1427,18 @@ public class ImsManager {
}
/*
- * Returns a flag indicating whether the IMS service is available. If it is not available,
- * it will try to connect before reporting failure.
+ * Returns a flag indicating whether the IMS service is available. If it is not available or
+ * busy, it will try to connect before reporting failure.
*/
public boolean isServiceAvailable() {
+ // If we are busy resolving dynamic IMS bindings, we are not available yet.
+ TelephonyManager tm = (TelephonyManager)
+ mContext.getSystemService(Context.TELEPHONY_SERVICE);
+ if (tm.isResolvingImsBinding()) {
+ Log.d(TAG, "isServiceAvailable: resolving IMS binding, returning false");
+ return false;
+ }
+
connectIfServiceIsAvailable();
// mImsServiceProxy will always create an ImsServiceProxy.
return mMmTelFeatureConnection.isBinderAlive();