diff --git a/java/com/android/incallui/VideoPauseController.java b/java/com/android/incallui/VideoPauseController.java
index 2595e2f..36c9ef3 100644
--- a/java/com/android/incallui/VideoPauseController.java
+++ b/java/com/android/incallui/VideoPauseController.java
@@ -66,11 +66,6 @@
     return sVideoPauseController;
   }
 
-  private boolean wasIncomingCall() {
-    return (mPrevCallState == DialerCall.State.CALL_WAITING
-        || mPrevCallState == DialerCall.State.INCOMING);
-  }
-
   /**
    * Determines if a call is in incoming/waiting state.
    *
@@ -198,7 +193,7 @@
     }
     final boolean canVideoPause = videoCanPause(call);
 
-    if ((wasIncomingCall() || wasDialing()) && canVideoPause && !mIsInBackground) {
+    if (canVideoPause && !mIsInBackground) {
       // Send resume request for the active call, if user rejects incoming call, ends dialing
       // call, or the call was previously in a paused state and UI is in the foreground.
       sendRequest(call, true);
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java b/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java
index f4e0a01..b839293 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoCallCallback.java
@@ -173,11 +173,9 @@
     switch (event) {
       case Connection.VideoProvider.SESSION_EVENT_RX_PAUSE:
         LogUtil.i("ImsVideoCallCallback.onCallSessionEvent", "rx_pause");
-        videoTech.onPausedEvent();
         break;
       case Connection.VideoProvider.SESSION_EVENT_RX_RESUME:
         LogUtil.i("ImsVideoCallCallback.onCallSessionEvent", "rx_resume");
-        videoTech.onResumedEvent();
         break;
       case Connection.VideoProvider.SESSION_EVENT_CAMERA_FAILURE:
         LogUtil.i("ImsVideoCallCallback.onCallSessionEvent", "camera_failure");
diff --git a/java/com/android/incallui/videotech/ims/ImsVideoTech.java b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
index 4e74439..99d812a 100644
--- a/java/com/android/incallui/videotech/ims/ImsVideoTech.java
+++ b/java/com/android/incallui/videotech/ims/ImsVideoTech.java
@@ -269,24 +269,6 @@
     call.getVideoCall().setDeviceOrientation(rotation);
   }
 
-  /**
-   * Called when we receive an rx_pause from the IMS stack. Update our state so we know we are
-   * currently paused. This is important in the cases where we swap calls since pause() and
-   * unpause() are not called.
-   */
-  void onPausedEvent() {
-    paused = true;
-  }
-
-  /**
-   * Called when we receive an rx_resume from the IMS stack. Update our state so we know we are
-   * currently not paused. This is important in the cases where we swap calls since pause() and
-   * unpause() are not called.
-   */
-  void onResumedEvent() {
-    paused = false;
-  }
-
   private boolean canPause() {
     return call.getDetails().can(Details.CAPABILITY_CAN_PAUSE_VIDEO)
         && call.getState() == Call.STATE_ACTIVE
