Hang up all calls if the UI crashes.

bug:10823938
Change-Id: I417b4f4e1351efd65de65edaedd778115e605cd1
diff --git a/src/com/android/phone/PhoneUtils.java b/src/com/android/phone/PhoneUtils.java
index 97be90b..e4c9a72 100644
--- a/src/com/android/phone/PhoneUtils.java
+++ b/src/com/android/phone/PhoneUtils.java
@@ -326,6 +326,28 @@
     }
 
     /**
+     * Hangs up all active calls.
+     */
+    static void hangupAllCalls(CallManager cm) {
+        final Call ringing = cm.getFirstActiveRingingCall();
+        final Call fg = cm.getActiveFgCall();
+        final Call bg = cm.getFirstActiveBgCall();
+
+        // We go in reverse order, BG->FG->RINGING because hanging up a ringing call or an active
+        // call can move a bg call to a fg call which would force us to loop over each call
+        // several times.  This ordering works best to ensure we dont have any more calls.
+        if (bg != null && !bg.isIdle()) {
+            hangup(bg);
+        }
+        if (fg != null && !fg.isIdle()) {
+            hangup(fg);
+        }
+        if (ringing != null && !ringing.isIdle()) {
+            hangupRingingCall(fg);
+        }
+    }
+
+    /**
      * Smart "hang up" helper method which hangs up exactly one connection,
      * based on the current Phone state, as follows:
      * <ul>