Merge "Don't make all buttons invisible at startup"
diff --git a/InCallUI/res/values/strings.xml b/InCallUI/res/values/strings.xml
index cfe3d41..b8a84c7 100644
--- a/InCallUI/res/values/strings.xml
+++ b/InCallUI/res/values/strings.xml
@@ -447,17 +447,6 @@
     <!-- This can be used in any application wanting to disable the text "Emergency number" -->
     <string name="emergency_call_dialog_number_for_display">Emergency number</string>
 
-    <!-- STOPSHIP These strings are for debugging only -->
-    <!-- Call substate label -->
-    <string name="call_substate_label" translatable="false">Call substate - \u000a</string>
-    <!-- Call substate label for call resumed -->
-    <string name="call_substate_call_resumed" translatable="false">Resumed \u000a</string>
-    <!-- Call substate label for call connected suspended (audio) -->
-    <string name="call_substate_connected_suspended_audio" translatable="false">Connected Suspended (Audio) \u000a</string>
-    <!-- Call substate label for call connected suspended (video) -->
-    <string name="call_substate_connected_suspended_video" translatable="false">Connected Suspended (Video) \u000a</string>
-    <!-- Call substate label for avp retry -->
-    <string name="call_substate_avp_retry" translatable="false">Avp Retry \u000a</string>
     <!-- Video quality changed message -->
     <string name="video_quality_changed" translatable="false">Video quality changed to \u0020</string>
     <!-- Video quality High -->
diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java
index 4ed7a49..e26c047 100644
--- a/InCallUI/src/com/android/incallui/Call.java
+++ b/InCallUI/src/com/android/incallui/Call.java
@@ -172,11 +172,11 @@
     private static final String ID_PREFIX = Call.class.getSimpleName() + "_";
     private static int sIdCounter = 0;
 
-    private android.telecom.Call.Listener mTelecommCallListener =
-            new android.telecom.Call.Listener() {
+    private android.telecom.Call.Callback mTelecomCallCallback =
+            new android.telecom.Call.Callback() {
                 @Override
                 public void onStateChanged(android.telecom.Call call, int newState) {
-                    Log.d(this, "TelecommCallListener onStateChanged call=" + call + " newState="
+                    Log.d(this, "TelecommCallCallback onStateChanged call=" + call + " newState="
                             + newState);
                     update();
                 }
@@ -184,7 +184,7 @@
                 @Override
                 public void onParentChanged(android.telecom.Call call,
                         android.telecom.Call newParent) {
-                    Log.d(this, "TelecommCallListener onParentChanged call=" + call + " newParent="
+                    Log.d(this, "TelecommCallCallback onParentChanged call=" + call + " newParent="
                             + newParent);
                     update();
                 }
@@ -198,7 +198,7 @@
                 @Override
                 public void onDetailsChanged(android.telecom.Call call,
                         android.telecom.Call.Details details) {
-                    Log.d(this, "TelecommCallListener onStateChanged call=" + call + " details="
+                    Log.d(this, "TelecommCallCallback onStateChanged call=" + call + " details="
                             + details);
                     update();
                 }
@@ -206,7 +206,7 @@
                 @Override
                 public void onCannedTextResponsesLoaded(android.telecom.Call call,
                         List<String> cannedTextResponses) {
-                    Log.d(this, "TelecommCallListener onStateChanged call=" + call
+                    Log.d(this, "TelecommCallCallback onStateChanged call=" + call
                             + " cannedTextResponses=" + cannedTextResponses);
                     update();
                 }
@@ -214,7 +214,7 @@
                 @Override
                 public void onPostDialWait(android.telecom.Call call,
                         String remainingPostDialSequence) {
-                    Log.d(this, "TelecommCallListener onStateChanged call=" + call
+                    Log.d(this, "TelecommCallCallback onStateChanged call=" + call
                             + " remainingPostDialSequence=" + remainingPostDialSequence);
                     update();
                 }
@@ -222,15 +222,15 @@
                 @Override
                 public void onVideoCallChanged(android.telecom.Call call,
                         VideoCall videoCall) {
-                    Log.d(this, "TelecommCallListener onStateChanged call=" + call + " videoCall="
+                    Log.d(this, "TelecommCallCallback onStateChanged call=" + call + " videoCall="
                             + videoCall);
                     update();
                 }
 
                 @Override
                 public void onCallDestroyed(android.telecom.Call call) {
-                    Log.d(this, "TelecommCallListener onStateChanged call=" + call);
-                    call.removeListener(mTelecommCallListener);
+                    Log.d(this, "TelecommCallCallback onStateChanged call=" + call);
+                    call.unregisterCallback(mTelecomCallCallback);
                 }
 
                 @Override
@@ -252,7 +252,7 @@
      */
     private int mModifyToVideoState = VideoProfile.VideoState.AUDIO_ONLY;
 
-    private InCallVideoCallListener mVideoCallListener;
+    private InCallVideoCallCallback mVideoCallCallback;
 
     /**
      * Used only to create mock calls for testing
@@ -268,7 +268,7 @@
         mTelecommCall = telecommCall;
         mId = ID_PREFIX + Integer.toString(sIdCounter++);
         updateFromTelecommCall();
-        mTelecommCall.addListener(mTelecommCallListener);
+        mTelecommCall.registerCallback(mTelecomCallCallback);
     }
 
     public android.telecom.Call getTelecommCall() {
@@ -301,10 +301,10 @@
         setDisconnectCause(mTelecommCall.getDetails().getDisconnectCause());
 
         if (mTelecommCall.getVideoCall() != null) {
-            if (mVideoCallListener == null) {
-                mVideoCallListener = new InCallVideoCallListener(this);
+            if (mVideoCallCallback == null) {
+                mVideoCallCallback = new InCallVideoCallCallback(this);
             }
-            mTelecommCall.getVideoCall().setVideoCallListener(mVideoCallListener);
+            mTelecommCall.getVideoCall().registerCallback(mVideoCallCallback);
         }
 
         mChildCallIds.clear();
@@ -466,10 +466,6 @@
         return mTelecommCall.getDetails().getVideoState();
     }
 
-    public int getCallSubstate() {
-        return mTelecommCall.getDetails().getCallSubstate();
-    }
-
     public boolean isVideoCall(Context context) {
         return CallUtil.isVideoEnabled(context) &&
                 VideoProfile.VideoState.isVideo(getVideoState());
@@ -553,7 +549,7 @@
         }
 
         return String.format(Locale.US, "[%s, %s, %s, children:%s, parent:%s, conferenceable:%s, " +
-                "videoState:%d, callSubState:%d, mSessionModificationState:%d, VideoSettings:%s]",
+                "videoState:%d, mSessionModificationState:%d, VideoSettings:%s]",
                 mId,
                 State.toString(getState()),
                 android.telecom.Call.Details
@@ -562,7 +558,6 @@
                 getParentId(),
                 this.mTelecommCall.getConferenceableCalls(),
                 mTelecommCall.getDetails().getVideoState(),
-                mTelecommCall.getDetails().getCallSubstate(), 
                 mSessionModificationState,
                 getVideoSettings());
     }
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index 43431c7..718dd52 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -374,9 +374,11 @@
         final boolean showAddCall = TelecomAdapter.getInstance().canAddCall();
         final boolean showMerge = call.can(
                 android.telecom.Call.Details.CAPABILITY_MERGE_CONFERENCE);
-        final boolean showUpgradeToVideo = !isVideo
-                && call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_LOCAL_TX)
-                && call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_REMOTE_RX);
+        // TODO: This button is currently being used for both upgrade and downgrade scenarios.
+        // It should be split into BUTTON_DOWNGRADE_TO_VOICE AND BUTTON_UPGRADE_TO_VIDEO
+        final boolean showUpgradeToVideo = isVideo ||
+                (call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_LOCAL_TX)
+                && call.can(android.telecom.Call.Details.CAPABILITY_SUPPORTS_VT_REMOTE_RX));
 
         final boolean showMute = call.can(android.telecom.Call.Details.CAPABILITY_MUTE);
 
@@ -386,9 +388,7 @@
         ui.setHold(isCallOnHold);
         ui.showButton(BUTTON_MUTE, showMute);
         ui.showButton(BUTTON_ADD_CALL, showAddCall);
-        // TODO: This button is currently being used for both upgrade and downgrade scenarios.
-        // It should be split into BUTTON_DOWNGRADE_TO_VOICE AND BUTTON_UPGRADE_TO_VIDEO
-        ui.showButton(BUTTON_UPGRADE_TO_VIDEO, true);
+        ui.showButton(BUTTON_UPGRADE_TO_VIDEO, showUpgradeToVideo);
         ui.showButton(BUTTON_DOWNGRADE_TO_VOICE, false);
         ui.showButton(BUTTON_SWITCH_CAMERA, isVideo);
         ui.showButton(BUTTON_PAUSE_VIDEO, isVideo);
diff --git a/InCallUI/src/com/android/incallui/InCallPresenter.java b/InCallUI/src/com/android/incallui/InCallPresenter.java
index 9c0fca3..2b75400 100644
--- a/InCallUI/src/com/android/incallui/InCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/InCallPresenter.java
@@ -110,8 +110,8 @@
      */
     private PhoneAccountHandle mPendingPhoneAccountHandle;
 
-    private final android.telecom.Call.Listener mCallListener =
-            new android.telecom.Call.Listener() {
+    private final android.telecom.Call.Callback mCallCallback =
+            new android.telecom.Call.Callback() {
         @Override
         public void onPostDialWait(android.telecom.Call call, String remainingPostDialSequence) {
             onPostDialCharWait(mCallList.getCallByTelecommCall(call).getId(),
@@ -377,7 +377,7 @@
         // Since a call has been added we are no longer waiting for Telecom to send us a
         // call.
         setBoundAndWaitingForOutgoingCall(false, null);
-        call.addListener(mCallListener);
+        call.registerCallback(mCallCallback);
     }
 
     /**
@@ -385,7 +385,7 @@
      * method invocation from InCallService.
      */
     public void onCallRemoved(android.telecom.Call call) {
-        call.removeListener(mCallListener);
+        call.unregisterCallback(mCallCallback);
     }
 
     public void onCanAddCallChanged(boolean canAddCall) {
diff --git a/InCallUI/src/com/android/incallui/InCallVideoCallListener.java b/InCallUI/src/com/android/incallui/InCallVideoCallCallback.java
similarity index 85%
rename from InCallUI/src/com/android/incallui/InCallVideoCallListener.java
rename to InCallUI/src/com/android/incallui/InCallVideoCallCallback.java
index 741b8d6..f868b3b 100644
--- a/InCallUI/src/com/android/incallui/InCallVideoCallListener.java
+++ b/InCallUI/src/com/android/incallui/InCallVideoCallCallback.java
@@ -23,9 +23,9 @@
 import android.telecom.VideoProfile;
 
 /**
- * Implements the InCallUI Video Call Listener.
+ * Implements the InCallUI VideoCall Callback.
  */
-public class InCallVideoCallListener extends VideoCall.Listener {
+public class InCallVideoCallCallback extends VideoCall.Callback {
 
     /**
      * The call associated with this {@link InCallVideoClient}.
@@ -37,7 +37,7 @@
      *
      * @param call The call.
      */
-    public InCallVideoCallListener(Call call) {
+    public InCallVideoCallCallback(Call call) {
         mCall = call;
     }
 
@@ -57,9 +57,9 @@
 
         // Check for upgrades to video and downgrades to audio.
         if (wasVideoCall && !isVideoCall) {
-            InCallVideoCallListenerNotifier.getInstance().downgradeToAudio(mCall);
+            InCallVideoCallCallbackNotifier.getInstance().downgradeToAudio(mCall);
         } else if (previousVideoState != newVideoState) {
-            InCallVideoCallListenerNotifier.getInstance().upgradeToVideoRequest(mCall,
+            InCallVideoCallCallbackNotifier.getInstance().upgradeToVideoRequest(mCall,
                 newVideoState);
         }
     }
@@ -80,17 +80,17 @@
         Log.d(this, "onSessionModifyResponseReceived status=" + status + " requestedProfile="
                 + requestedProfile + " responseProfile=" + responseProfile);
         if (status != VideoProvider.SESSION_MODIFY_REQUEST_SUCCESS) {
-            InCallVideoCallListenerNotifier.getInstance().upgradeToVideoFail(status, mCall);
+            InCallVideoCallCallbackNotifier.getInstance().upgradeToVideoFail(status, mCall);
         } else if (requestedProfile != null && responseProfile != null) {
             boolean modifySucceeded = requestedProfile.getVideoState() ==
                     responseProfile.getVideoState();
             boolean isVideoCall = VideoProfile.VideoState.isVideo(responseProfile.getVideoState());
             if (modifySucceeded && isVideoCall) {
-                InCallVideoCallListenerNotifier.getInstance().upgradeToVideoSuccess(mCall);
+                InCallVideoCallCallbackNotifier.getInstance().upgradeToVideoSuccess(mCall);
             } else if (!modifySucceeded && isVideoCall) {
-                InCallVideoCallListenerNotifier.getInstance().upgradeToVideoFail(status, mCall);
+                InCallVideoCallCallbackNotifier.getInstance().upgradeToVideoFail(status, mCall);
             } else if (modifySucceeded && !isVideoCall) {
-                InCallVideoCallListenerNotifier.getInstance().downgradeToAudio(mCall);
+                InCallVideoCallCallbackNotifier.getInstance().downgradeToAudio(mCall);
             }
         } else {
             Log.d(this, "onSessionModifyResponseReceived request and response Profiles are null");
@@ -104,7 +104,7 @@
      */
     @Override
     public void onCallSessionEvent(int event) {
-        InCallVideoCallListenerNotifier.getInstance().callSessionEvent(event);
+        InCallVideoCallCallbackNotifier.getInstance().callSessionEvent(event);
     }
 
     /**
@@ -115,7 +115,7 @@
      */
     @Override
     public void onPeerDimensionsChanged(int width, int height) {
-        InCallVideoCallListenerNotifier.getInstance().peerDimensionsChanged(mCall, width, height);
+        InCallVideoCallCallbackNotifier.getInstance().peerDimensionsChanged(mCall, width, height);
     }
 
     /**
@@ -125,7 +125,7 @@
      */
     @Override
     public void onVideoQualityChanged(int videoQuality) {
-        InCallVideoCallListenerNotifier.getInstance().videoQualityChanged(mCall, videoQuality);
+        InCallVideoCallCallbackNotifier.getInstance().videoQualityChanged(mCall, videoQuality);
     }
 
     /**
@@ -137,7 +137,7 @@
     @Override
     public void onCallDataUsageChanged(long dataUsage) {
         Log.d(this, "onCallDataUsageChanged: dataUsage = " + dataUsage);
-        InCallVideoCallListenerNotifier.getInstance().callDataUsageChanged(dataUsage);
+        InCallVideoCallCallbackNotifier.getInstance().callDataUsageChanged(dataUsage);
     }
 
     /**
@@ -149,7 +149,7 @@
     @Override
     public void onCameraCapabilitiesChanged(CameraCapabilities cameraCapabilities) {
         if (cameraCapabilities != null) {
-            InCallVideoCallListenerNotifier.getInstance().cameraDimensionsChanged(
+            InCallVideoCallCallbackNotifier.getInstance().cameraDimensionsChanged(
                     mCall, cameraCapabilities.getWidth(), cameraCapabilities.getHeight());
         }
     }
diff --git a/InCallUI/src/com/android/incallui/InCallVideoCallListenerNotifier.java b/InCallUI/src/com/android/incallui/InCallVideoCallCallbackNotifier.java
similarity index 96%
rename from InCallUI/src/com/android/incallui/InCallVideoCallListenerNotifier.java
rename to InCallUI/src/com/android/incallui/InCallVideoCallCallbackNotifier.java
index 818ed03..dfb645b 100644
--- a/InCallUI/src/com/android/incallui/InCallVideoCallListenerNotifier.java
+++ b/InCallUI/src/com/android/incallui/InCallVideoCallCallbackNotifier.java
@@ -23,14 +23,15 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
- * Class used by {@link InCallService.VideoCallListener} to notify interested parties of incoming
+ * Class used by {@link InCallService.VideoCallCallback} to notify interested parties of incoming
  * events.
  */
-public class InCallVideoCallListenerNotifier {
+public class InCallVideoCallCallbackNotifier {
     /**
      * Singleton instance of this class.
      */
-    private static InCallVideoCallListenerNotifier sInstance = new InCallVideoCallListenerNotifier();
+    private static InCallVideoCallCallbackNotifier sInstance =
+            new InCallVideoCallCallbackNotifier();
 
     /**
      * ConcurrentHashMap constructor params: 8 is initial table size, 0.9f is
@@ -48,14 +49,14 @@
     /**
      * Static singleton accessor method.
      */
-    public static InCallVideoCallListenerNotifier getInstance() {
+    public static InCallVideoCallCallbackNotifier getInstance() {
         return sInstance;
     }
 
     /**
      * Private constructor.  Instance should only be acquired through getInstance().
      */
-    private InCallVideoCallListenerNotifier() {
+    private InCallVideoCallCallbackNotifier() {
     }
 
     /**
diff --git a/InCallUI/src/com/android/incallui/VideoCallFragment.java b/InCallUI/src/com/android/incallui/VideoCallFragment.java
index fb29c9c..6077017 100644
--- a/InCallUI/src/com/android/incallui/VideoCallFragment.java
+++ b/InCallUI/src/com/android/incallui/VideoCallFragment.java
@@ -595,58 +595,6 @@
     }
 
     /**
-     * Displays a message on the UI that the call substate has changed.
-     *
-     */
-    @Override
-    public void showCallSubstateChanged(int callSubstate) {
-        Log.d(this, "showCallSubstateChanged - call substate changed to "  + callSubstate);
-
-        final Context context = getActivity();
-        if (context == null) {
-            Log.e(this, "showCallSubstateChanged - Activity is null. Return");
-            return;
-        }
-
-        final Resources resources = context.getResources();
-
-        String callSubstateChangedText = "";
-
-        if (isEnabled(Connection.SUBSTATE_AUDIO_CONNECTED_SUSPENDED, callSubstate)) {
-            callSubstateChangedText +=
-                resources.getString(R.string.call_substate_connected_suspended_audio);
-        }
-
-        if (isEnabled(Connection.SUBSTATE_VIDEO_CONNECTED_SUSPENDED, callSubstate)) {
-            callSubstateChangedText +=
-                resources.getString(R.string.call_substate_connected_suspended_video);
-        }
-
-        if (isEnabled(Connection.SUBSTATE_AVP_RETRY, callSubstate)) {
-            callSubstateChangedText +=
-                resources.getString(R.string.call_substate_avp_retry);
-        }
-
-        if (isNotEnabled(Connection.SUBSTATE_ALL, callSubstate)) {
-            callSubstateChangedText = resources.getString(R.string.call_substate_call_resumed);
-        }
-
-        if (!callSubstateChangedText.isEmpty()) {
-            String callSubstateLabelText = resources.getString(R.string.call_substate_label);
-            Toast.makeText(context, callSubstateLabelText + callSubstateChangedText,
-                Toast.LENGTH_SHORT).show();
-        }
-    }
-
-    boolean isEnabled(int mask, int callSubstate) {
-        return (mask & callSubstate) == mask;
-    }
-
-    boolean isNotEnabled(int mask, int callSubstate) {
-        return (mask & callSubstate) == 0;
-    }
-
-    /**
      * Cleans up the video telephony surfaces.  Used when the presenter indicates a change to an
      * audio-only state.  Since the surfaces are static, it is important to ensure they are cleaned
      * up promptly.
diff --git a/InCallUI/src/com/android/incallui/VideoCallPresenter.java b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
index 9bc0822..f11f328 100644
--- a/InCallUI/src/com/android/incallui/VideoCallPresenter.java
+++ b/InCallUI/src/com/android/incallui/VideoCallPresenter.java
@@ -33,8 +33,8 @@
 import com.android.incallui.InCallPresenter.InCallOrientationListener;
 import com.android.incallui.InCallPresenter.InCallStateListener;
 import com.android.incallui.InCallPresenter.IncomingCallListener;
-import com.android.incallui.InCallVideoCallListenerNotifier.SurfaceChangeListener;
-import com.android.incallui.InCallVideoCallListenerNotifier.VideoEventListener;
+import com.android.incallui.InCallVideoCallCallbackNotifier.SurfaceChangeListener;
+import com.android.incallui.InCallVideoCallCallbackNotifier.VideoEventListener;
 import com.google.common.base.Preconditions;
 
 import java.util.Objects;
@@ -64,7 +64,7 @@
 public class VideoCallPresenter extends Presenter<VideoCallPresenter.VideoCallUi> implements
         IncomingCallListener, InCallOrientationListener, InCallStateListener,
         InCallDetailsListener, SurfaceChangeListener, VideoEventListener,
-        InCallVideoCallListenerNotifier.SessionModificationListener {
+        InCallVideoCallCallbackNotifier.SessionModificationListener {
     public static final String TAG = "VideoCallPresenter";
 
     public static final boolean DEBUG = false;
@@ -158,11 +158,6 @@
 
     private static boolean mIsVideoMode = false;
 
-    /**
-     * Stores the current call substate.
-     */
-    private int mCurrentCallSubstate;
-
     /** Handler which resets request state to NO_REQUEST after an interval. */
     private Handler mSessionModificationResetHandler;
     private static final long SESSION_MODIFICATION_RESET_DELAY_MS = 3000;
@@ -198,9 +193,9 @@
         InCallPresenter.getInstance().addDetailsListener(this);
 
         // Register for surface and video events from {@link InCallVideoCallListener}s.
-        InCallVideoCallListenerNotifier.getInstance().addSurfaceChangeListener(this);
-        InCallVideoCallListenerNotifier.getInstance().addVideoEventListener(this);
-        InCallVideoCallListenerNotifier.getInstance().addSessionModificationListener(this);
+        InCallVideoCallCallbackNotifier.getInstance().addSurfaceChangeListener(this);
+        InCallVideoCallCallbackNotifier.getInstance().addVideoEventListener(this);
+        InCallVideoCallCallbackNotifier.getInstance().addSessionModificationListener(this);
         mCurrentVideoState = VideoProfile.VideoState.AUDIO_ONLY;
         mCurrentCallState = Call.State.INVALID;
     }
@@ -220,9 +215,9 @@
         InCallPresenter.getInstance().removeIncomingCallListener(this);
         InCallPresenter.getInstance().removeOrientationListener(this);
 
-        InCallVideoCallListenerNotifier.getInstance().removeSurfaceChangeListener(this);
-        InCallVideoCallListenerNotifier.getInstance().removeVideoEventListener(this);
-        InCallVideoCallListenerNotifier.getInstance().removeSessionModificationListener(this);
+        InCallVideoCallCallbackNotifier.getInstance().removeSurfaceChangeListener(this);
+        InCallVideoCallCallbackNotifier.getInstance().removeVideoEventListener(this);
+        InCallVideoCallCallbackNotifier.getInstance().removeSessionModificationListener(this);
     }
 
     /**
@@ -449,19 +444,6 @@
         showVideoUi(call.getVideoState(), call.getState());
     }
 
-    private void checkForCallSubstateChange(Call call) {
-        if (mCurrentCallSubstate != call.getCallSubstate()) {
-            VideoCallUi ui = getUi();
-            if (ui == null) {
-                Log.e(this, "Error VideoCallUi is null. Return.");
-                return;
-            }
-            mCurrentCallSubstate = call.getCallSubstate();
-            // Display a call substate changed message on UI.
-            ui.showCallSubstateChanged(mCurrentCallSubstate);
-        }
-    }
-
     private void cleanupSurfaces() {
         final VideoCallUi ui = getUi();
         if (ui == null) {
@@ -498,13 +480,11 @@
     private void updateCallCache(Call call) {
         if (call == null) {
             mCurrentVideoState = VideoProfile.VideoState.AUDIO_ONLY;
-            mCurrentCallSubstate = Connection.SUBSTATE_NONE;
             mCurrentCallState = Call.State.INVALID;
             mVideoCall = null;
             mPrimaryCall = null;
         } else {
             mCurrentVideoState = call.getVideoState();
-            mCurrentCallSubstate = call.getCallSubstate();
             mVideoCall = call.getVideoCall();
             mCurrentCallState = call.getState();
             mPrimaryCall = call;
@@ -529,7 +509,6 @@
         }
 
         updateVideoCall(call);
-        checkForCallSubstateChange(call);
 
         updateCallCache(call);
     }
@@ -1141,6 +1120,5 @@
         Point getScreenSize();
         Point getPreviewSize();
         void cleanupSurfaces();
-        void showCallSubstateChanged(int callSubstate);
     }
 }
diff --git a/InCallUI/src/com/android/incallui/VideoPauseController.java b/InCallUI/src/com/android/incallui/VideoPauseController.java
index dd47c7f..14e43b1 100644
--- a/InCallUI/src/com/android/incallui/VideoPauseController.java
+++ b/InCallUI/src/com/android/incallui/VideoPauseController.java
@@ -28,13 +28,12 @@
 
 package com.android.incallui;
 
-import android.os.SystemProperties;
 import android.telecom.VideoProfile;
 import com.android.incallui.Call.State;
 import com.android.incallui.InCallPresenter.InCallState;
 import com.android.incallui.InCallPresenter.InCallStateListener;
 import com.android.incallui.InCallPresenter.IncomingCallListener;
-import com.android.incallui.InCallVideoCallListenerNotifier.SessionModificationListener;
+import com.android.incallui.InCallVideoCallCallbackNotifier.SessionModificationListener;
 import com.google.common.base.Preconditions;
 
 /**
@@ -119,7 +118,7 @@
         mInCallPresenter = Preconditions.checkNotNull(inCallPresenter);
         mInCallPresenter.addListener(this);
         mInCallPresenter.addIncomingCallListener(this);
-        InCallVideoCallListenerNotifier.getInstance().addSessionModificationListener(this);
+        InCallVideoCallCallbackNotifier.getInstance().addSessionModificationListener(this);
     }
 
     /**
@@ -128,7 +127,7 @@
      */
     public void tearDown() {
         log("tearDown...");
-        InCallVideoCallListenerNotifier.getInstance().removeSessionModificationListener(this);
+        InCallVideoCallCallbackNotifier.getInstance().removeSessionModificationListener(this);
         mInCallPresenter.removeListener(this);
         mInCallPresenter.removeIncomingCallListener(this);
         clear();