merge in lmp-release history after reset to 77c77080eaf88cfc55eb16bff6fd2788817a6896
diff --git a/src/java/com/android/internal/telephony/CallManager.java b/src/java/com/android/internal/telephony/CallManager.java
index 3f6df87..db10324 100644
--- a/src/java/com/android/internal/telephony/CallManager.java
+++ b/src/java/com/android/internal/telephony/CallManager.java
@@ -26,7 +26,7 @@
 import android.os.Message;
 import android.os.RegistrantList;
 import android.os.Registrant;
-import android.telecomm.VideoCallProfile;
+import android.telecomm.VideoProfile;
 import android.telephony.PhoneNumberUtils;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
@@ -625,7 +625,7 @@
         }
 
         // We only support the AUDIO_ONLY video state in this scenario.
-        ringingPhone.acceptCall(VideoCallProfile.VideoState.AUDIO_ONLY);
+        ringingPhone.acceptCall(VideoProfile.VideoState.AUDIO_ONLY);
 
         if (VDBG) {
             Rlog.d(LOG_TAG, "End acceptCall(" +ringingCall + ")");
diff --git a/src/java/com/android/internal/telephony/Connection.java b/src/java/com/android/internal/telephony/Connection.java
index 8eb18b6..2f1009d 100644
--- a/src/java/com/android/internal/telephony/Connection.java
+++ b/src/java/com/android/internal/telephony/Connection.java
@@ -16,7 +16,6 @@
 
 package com.android.internal.telephony;
 
-import android.telecomm.ConnectionService;
 import android.telephony.Rlog;
 import android.util.Log;
 
@@ -42,8 +41,8 @@
         public void onVideoStateChanged(int videoState);
         public void onLocalVideoCapabilityChanged(boolean capable);
         public void onRemoteVideoCapabilityChanged(boolean capable);
-        public void onVideoCallProviderChanged(
-                ConnectionService.VideoCallProvider videoCallProvider);
+        public void onVideoProviderChanged(
+                android.telecomm.Connection.VideoProvider videoProvider);
         public void onAudioQualityChanged(int audioQuality);
     }
 
@@ -58,8 +57,8 @@
         @Override
         public void onRemoteVideoCapabilityChanged(boolean capable) {}
         @Override
-        public void onVideoCallProviderChanged(
-                ConnectionService.VideoCallProvider videoCallProvider) {}
+        public void onVideoProviderChanged(
+                android.telecomm.Connection.VideoProvider videoProvider) {}
         @Override
         public void onAudioQualityChanged(int audioQuality) {}
     }
@@ -81,7 +80,7 @@
     private boolean mLocalVideoCapable;
     private boolean mRemoteVideoCapable;
     private int mAudioQuality;
-    private ConnectionService.VideoCallProvider mVideoCallProvider;
+    private android.telecomm.Connection.VideoProvider mVideoProvider;
 
     /* Instance Methods */
 
@@ -397,12 +396,12 @@
     }
 
     /**
-     * Returns the {@link ConnectionService.VideoCallProvider} for the connection.
+     * Returns the {@link android.telecomm.Connection.VideoProvider} for the connection.
      *
-     * @return The {@link ConnectionService.VideoCallProvider}.
+     * @return The {@link android.telecomm.Connection.VideoProvider}.
      */
-    public ConnectionService.VideoCallProvider getVideoCallProvider() {
-        return mVideoCallProvider;
+    public android.telecomm.Connection.VideoProvider getVideoProvider() {
+        return mVideoProvider;
     }
 
     /**
@@ -416,7 +415,7 @@
 
     /**
      * Sets the videoState for the current connection and reports the changes to all listeners.
-     * Valid video states are defined in {@link VideoCallProfile}.
+     * Valid video states are defined in {@link android.telecomm.VideoProfile}.
      *
      * @return The video state.
      */
@@ -464,14 +463,14 @@
     }
 
     /**
-     * Sets the {@link ConnectionService.VideoCallProvider} for the connection.
+     * Sets the {@link android.telecomm.Connection.VideoProvider} for the connection.
      *
-     * @param videoCallProvider The video call provider.
+     * @param videoProvider The video call provider.
      */
-    public void setVideoCallProvider(ConnectionService.VideoCallProvider videoCallProvider) {
-        mVideoCallProvider = videoCallProvider;
+    public void setVideoProvider(android.telecomm.Connection.VideoProvider videoProvider) {
+        mVideoProvider = videoProvider;
         for (Listener l : mListeners) {
-            l.onVideoCallProviderChanged(mVideoCallProvider);
+            l.onVideoProviderChanged(mVideoProvider);
         }
     }
 
diff --git a/src/java/com/android/internal/telephony/PhoneBase.java b/src/java/com/android/internal/telephony/PhoneBase.java
index b6d9987..0e537fa 100644
--- a/src/java/com/android/internal/telephony/PhoneBase.java
+++ b/src/java/com/android/internal/telephony/PhoneBase.java
@@ -33,7 +33,7 @@
 import android.os.SystemProperties;
 import android.preference.PreferenceManager;
 import android.provider.Settings;
-import android.telecomm.VideoCallProfile;
+import android.telecomm.VideoProfile;
 import android.telephony.CellIdentityCdma;
 import android.telephony.CellInfo;
 import android.telephony.CellInfoCdma;
@@ -488,7 +488,7 @@
                     String dialString = (String) ar.result;
                     if (TextUtils.isEmpty(dialString)) return;
                     try {
-                        dialInternal(dialString, null, VideoCallProfile.VideoState.AUDIO_ONLY);
+                        dialInternal(dialString, null, VideoProfile.VideoState.AUDIO_ONLY);
                     } catch (CallStateException e) {
                         Rlog.e(LOG_TAG, "silent redial failed: " + e);
                     }
diff --git a/src/java/com/android/internal/telephony/gsm/GSMPhone.java b/src/java/com/android/internal/telephony/gsm/GSMPhone.java
index bde5d0c..a2f8dae 100644
--- a/src/java/com/android/internal/telephony/gsm/GSMPhone.java
+++ b/src/java/com/android/internal/telephony/gsm/GSMPhone.java
@@ -29,7 +29,7 @@
 import android.os.SystemProperties;
 import android.preference.PreferenceManager;
 import android.provider.Telephony;
-import android.telecomm.VideoCallProfile;
+import android.telecomm.VideoProfile;
 import android.telephony.CellLocation;
 import android.telephony.PhoneNumberUtils;
 import android.telephony.ServiceState;
@@ -829,7 +829,7 @@
         }
 
         if (LOCAL_DEBUG) Rlog.d(LOG_TAG, "Trying (non-IMS) CS call");
-        return dialInternal(dialString, null, VideoCallProfile.VideoState.AUDIO_ONLY);
+        return dialInternal(dialString, null, VideoProfile.VideoState.AUDIO_ONLY);
     }
 
     @Override
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCall.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCall.java
index 0665300..b187128 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCall.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCall.java
@@ -275,7 +275,9 @@
     /* package */ ImsPhoneConnection
     getHandoverConnection() {
         ImsPhoneConnection conn = (ImsPhoneConnection) getEarliestConnection();
-        conn.setMultiparty(isMultiparty());
+        if (conn != null) {
+            conn.setMultiparty(isMultiparty());
+        }
         return conn;
     }
 
diff --git a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
index c356bb9..0cbdd7c 100644
--- a/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
+++ b/src/java/com/android/internal/telephony/imsphone/ImsPhoneCallTracker.java
@@ -35,7 +35,7 @@
 import android.os.RemoteException;
 import android.os.SystemProperties;
 import android.preference.PreferenceManager;
-import android.telecomm.VideoCallProfile;
+import android.telecomm.VideoProfile;
 import android.telephony.DisconnectCause;
 import android.telephony.PhoneNumberUtils;
 import android.telephony.Rlog;
@@ -102,9 +102,11 @@
 
                     IImsVideoCallProvider imsVideoCallProvider =
                             imsCall.getCallSession().getVideoCallProvider();
-                    ImsVideoCallProviderWrapper imsVideoCallProviderWrapper =
-                            new ImsVideoCallProviderWrapper(imsVideoCallProvider);
-                    conn.setVideoCallProvider(imsVideoCallProviderWrapper);
+                    if (imsVideoCallProvider != null) {
+                        ImsVideoCallProviderWrapper imsVideoCallProviderWrapper =
+                                new ImsVideoCallProviderWrapper(imsVideoCallProvider);
+                        conn.setVideoProvider(imsVideoCallProviderWrapper);
+                    }
 
                     if ((mForegroundCall.getState() != ImsPhoneCall.State.IDLE) ||
                             (mBackgroundCall.getState() != ImsPhoneCall.State.IDLE)) {
@@ -404,7 +406,7 @@
             if (imsVideoCallProvider != null) {
                 ImsVideoCallProviderWrapper imsVideoCallProviderWrapper =
                         new ImsVideoCallProviderWrapper(imsVideoCallProvider);
-                conn.setVideoCallProvider(imsVideoCallProviderWrapper);
+                conn.setVideoProvider(imsVideoCallProviderWrapper);
             }
         } catch (ImsException e) {
             loge("dialInternal : " + e);
@@ -1225,7 +1227,7 @@
                 }
                 break;
             case EVENT_DIAL_PENDINGMO:
-                dialInternal(mPendingMO, mClirMode, VideoCallProfile.VideoState.AUDIO_ONLY);
+                dialInternal(mPendingMO, mClirMode, VideoProfile.VideoState.AUDIO_ONLY);
                 break;
 
             case EVENT_EXIT_ECM_RESPONSE_CDMA: