Merge "Make voicemail vibrate/ringtone MSIM-aware." into lmp-mr1-dev
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 18a4036..06c6108 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -343,10 +343,13 @@
             // Update HAC Value in AudioManager
             mAudioManager.setParameter(HAC_KEY, hac != 0 ? HAC_VAL_ON : HAC_VAL_OFF);
             return true;
-        } else if (preference == mVoicemailSettings) {
+        } else if (preference.getKey().equals(mVoicemailSettings.getKey())) {
+            // Check key instead of comparing reference because closing the voicemail notification
+            // ringtone dialog invokes onResume(), but leaves the old preference screen up,
+            // TODO: Revert to checking reference after migrating voicemail to its own activity.
             if (DBG) log("onPreferenceTreeClick: Voicemail Settings Preference is clicked.");
 
-            final Dialog dialog = mVoicemailSettings.getDialog();
+            final Dialog dialog = ((PreferenceScreen) preference).getDialog();
             if (dialog != null) {
                 dialog.getActionBar().setDisplayHomeAsUpEnabled(false);
             }
@@ -421,6 +424,9 @@
                 saveVoiceMailAndForwardingNumber(newProviderKey, newProviderSettings);
             }
         } else if (preference.getKey().equals(mVoicemailNotificationVibrate.getKey())) {
+            // Check key instead of comparing reference because closing the voicemail notification
+            // ringtone dialog invokes onResume(), but leaves the old preference screen up,
+            // TODO: Revert to checking reference after migrating voicemail to its own activity.
             VoicemailNotificationSettingsUtil.setVibrationEnabled(
                     mPhone, Boolean.TRUE.equals(objValue));
         } else if (preference == mEnableVideoCalling) {
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 0deefd2..d83f10d 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -22,22 +22,16 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
-import android.content.pm.Signature;
-import android.net.ConnectivityManager;
 import android.net.Uri;
 import android.os.AsyncResult;
 import android.os.Binder;
 import android.os.Bundle;
 import android.os.Handler;
-import android.os.IBinder;
 import android.os.Looper;
 import android.os.Message;
 import android.os.Process;
-import android.os.RemoteException;
 import android.os.ServiceManager;
-import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.preference.PreferenceManager;
 import android.provider.Settings;
@@ -46,7 +40,6 @@
 import android.telephony.NeighboringCellInfo;
 import android.telephony.RadioAccessFamily;
 import android.telephony.ServiceState;
-import android.telephony.SubscriptionManager;
 import android.telephony.SubscriptionInfo;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
@@ -56,36 +49,24 @@
 import com.android.ims.ImsManager;
 import com.android.internal.telephony.CallManager;
 import com.android.internal.telephony.CommandException;
-import com.android.internal.telephony.Connection;
 import com.android.internal.telephony.DefaultPhoneNotifier;
 import com.android.internal.telephony.ITelephony;
 import com.android.internal.telephony.IccCard;
 import com.android.internal.telephony.Phone;
 import com.android.internal.telephony.PhoneFactory;
-import com.android.internal.telephony.PhoneProxy;
 import com.android.internal.telephony.ProxyController;
-import com.android.internal.telephony.CallManager;
-import com.android.internal.telephony.CommandException;
 import com.android.internal.telephony.PhoneConstants;
-import com.android.internal.telephony.TelephonyIntents;
-import com.android.internal.telephony.dataconnection.DctController;
-import com.android.internal.telephony.uicc.AdnRecord;
+import com.android.internal.telephony.SubscriptionController;
 import com.android.internal.telephony.uicc.IccIoResult;
 import com.android.internal.telephony.uicc.IccUtils;
 import com.android.internal.telephony.uicc.UiccCard;
-import com.android.internal.telephony.uicc.UiccCarrierPrivilegeRules;
 import com.android.internal.telephony.uicc.UiccController;
 import com.android.internal.util.HexDump;
 
 import static com.android.internal.telephony.PhoneConstants.SUBSCRIPTION_KEY;
 
 import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
-import java.util.Set;
 
 /**
  * Implementation of the ITelephony interface.
@@ -138,7 +119,7 @@
     private CallManager mCM;
     private AppOpsManager mAppOps;
     private MainThreadHandler mMainThreadHandler;
-    private SubscriptionManager mSubscriptionManager;
+    private SubscriptionController mSubscriptionController;
     private SharedPreferences mTelephonySharedPreferences;
 
     private static final String PREF_CARRIERS_ALPHATAG_PREFIX = "carrier_alphtag_";
@@ -727,7 +708,7 @@
         mMainThreadHandler = new MainThreadHandler();
         mTelephonySharedPreferences =
                 PreferenceManager.getDefaultSharedPreferences(mPhone.getContext());
-        mSubscriptionManager = SubscriptionManager.from(app);
+        mSubscriptionController = SubscriptionController.getInstance();
 
         publish();
     }
@@ -740,7 +721,7 @@
 
     // returns phone associated with the subId.
     private Phone getPhone(int subId) {
-        return PhoneFactory.getPhone(SubscriptionManager.getPhoneId(subId));
+        return PhoneFactory.getPhone(mSubscriptionController.getPhoneId(subId));
     }
     //
     // Implementation of the ITelephony interface.
@@ -793,7 +774,7 @@
         }
 
         boolean isValid = false;
-        List<SubscriptionInfo> slist = mSubscriptionManager.getActiveSubscriptionInfoList();
+        List<SubscriptionInfo> slist = mSubscriptionController.getActiveSubscriptionInfoList();
         if (slist != null) {
             for (SubscriptionInfo subInfoRecord : slist) {
                 if (subInfoRecord.getSubscriptionId() == subId) {
@@ -1141,7 +1122,7 @@
     // FIXME: subId version needed
     public boolean enableDataConnectivity() {
         enforceModifyPermission();
-        int subId = SubscriptionManager.getDefaultDataSubId();
+        int subId = mSubscriptionController.getDefaultDataSubId();
         getPhone(subId).setDataEnabled(true);
         return true;
     }
@@ -1149,14 +1130,14 @@
     // FIXME: subId version needed
     public boolean disableDataConnectivity() {
         enforceModifyPermission();
-        int subId = SubscriptionManager.getDefaultDataSubId();
+        int subId = mSubscriptionController.getDefaultDataSubId();
         getPhone(subId).setDataEnabled(false);
         return true;
     }
 
     // FIXME: subId version needed
     public boolean isDataConnectivityPossible() {
-        int subId = SubscriptionManager.getDefaultDataSubId();
+        int subId = mSubscriptionController.getDefaultDataSubId();
         return getPhone(subId).isDataConnectivityPossible();
     }
 
@@ -1178,12 +1159,12 @@
     }
 
     public int getDataState() {
-        Phone phone = getPhone(SubscriptionManager.getDefaultDataSubId());
+        Phone phone = getPhone(mSubscriptionController.getDefaultDataSubId());
         return DefaultPhoneNotifier.convertDataState(phone.getDataConnectionState());
     }
 
     public int getDataActivity() {
-        Phone phone = getPhone(SubscriptionManager.getDefaultDataSubId());
+        Phone phone = getPhone(mSubscriptionController.getDefaultDataSubId());
         return DefaultPhoneNotifier.convertDataActivityState(phone.getDataActivityState());
     }
 
@@ -1612,11 +1593,11 @@
      * Returns Default subId, 0 in the case of single standby.
      */
     private int getDefaultSubscription() {
-        return SubscriptionManager.getDefaultSubId();
+        return mSubscriptionController.getDefaultSubId();
     }
 
     private int getPreferredVoiceSubscription() {
-        return SubscriptionManager.getDefaultVoiceSubId();
+        return mSubscriptionController.getDefaultVoiceSubId();
     }
 
     /**
diff --git a/src/com/android/services/telephony/TelephonyConnectionService.java b/src/com/android/services/telephony/TelephonyConnectionService.java
index 43f8651..46bad01 100644
--- a/src/com/android/services/telephony/TelephonyConnectionService.java
+++ b/src/com/android/services/telephony/TelephonyConnectionService.java
@@ -377,8 +377,8 @@
     private boolean isOriginalConnectionKnown(
             com.android.internal.telephony.Connection originalConnection) {
         for (Connection connection : getAllConnections()) {
-            TelephonyConnection telephonyConnection = (TelephonyConnection) connection;
             if (connection instanceof TelephonyConnection) {
+                TelephonyConnection telephonyConnection = (TelephonyConnection) connection;
                 if (telephonyConnection.getOriginalConnection() == originalConnection) {
                     return true;
                 }