Add method and perform cleanups in ImsCall.
Tyler Gunn [Wed, 1 Jul 2015 23:39:43 +0000 (16:39 -0700)]
- Added a couple null-checks for accesses to mConferenceParticipants.
This issue was introduced in b/21376607; I noticed some NPE logspam related
to it.
- Added a new isPendingHold() method which can be used to tell if a call
is pending a hold (used in ImsPhoneConnection later).

Bug: 22173672
Change-Id: I4399e266743955facabc9de010b08764c73ca15f

src/java/com/android/ims/ImsCall.java

index 32fda76..ec546da 100644 (file)
@@ -755,6 +755,17 @@ public class ImsCall implements ICall {
     }
 
     /**
+     * Checks if the call is pending a hold operation.
+     *
+     * @return true if the call is pending a hold operation.
+     */
+    public boolean isPendingHold() {
+        synchronized(mLockObj) {
+            return (mUpdateRequest == UPDATE_HOLD);
+        }
+    }
+
+    /**
      * Checks if the call is established.
      *
      * @return true if the call is established
@@ -1591,7 +1602,8 @@ public class ImsCall implements ICall {
             }
         }
 
-        if (!mConferenceParticipants.isEmpty() && mListener != null) {
+        if (mConferenceParticipants != null && !mConferenceParticipants.isEmpty()
+                && mListener != null) {
             try {
                 mListener.onConferenceParticipantsStateChanged(this, mConferenceParticipants);
             } catch (Throwable t) {
@@ -1875,7 +1887,7 @@ public class ImsCall implements ICall {
             } catch (Throwable t) {
                 loge("processMergeComplete :: ", t);
             }
-            if (!mConferenceParticipants.isEmpty()) {
+            if (mConferenceParticipants != null && !mConferenceParticipants.isEmpty()) {
                 try {
                     listener.onConferenceParticipantsStateChanged(this, mConferenceParticipants);
                 } catch (Throwable t) {