Force initialize task stack callback for gesture modes on init

This handles an edge case where RotationTouchHelper#mMode starts as 3 button (by default)
* then changes to gesture nav.
* then onDestroy called
* then on re-initialization mMode will be gesture nav instead of 3-button
(it maintains state because of it being singleton).

The check to register the callback won't happen because we register only if previous mode and
current mode differ.
Don't rely on default value of mMode being 3 button when initializing

Bug: 181928969
Test: Followed repo steps in bug.
Restarted phone in all 3 nav modes and verified
expected quickswitch behavior

Change-Id: I381eba7417c4cde593edf4b9a34da55b50774e98
diff --git a/quickstep/src/com/android/quickstep/RotationTouchHelper.java b/quickstep/src/com/android/quickstep/RotationTouchHelper.java
index 66929d0..fc7a3df 100644
--- a/quickstep/src/com/android/quickstep/RotationTouchHelper.java
+++ b/quickstep/src/com/android/quickstep/RotationTouchHelper.java
@@ -152,7 +152,7 @@
 
         // Register for navigation mode changes
         SysUINavigationMode.Mode newMode = mSysUiNavMode.addModeChangeListener(this);
-        onNavigationModeChanged(newMode);
+        onNavModeChangedInternal(newMode, newMode.hasGestures);
         runOnDestroy(() -> mSysUiNavMode.removeModeChangeListener(this));
 
         mOrientationListener = new OrientationEventListener(mContext) {
@@ -245,13 +245,22 @@
 
     @Override
     public void onNavigationModeChanged(SysUINavigationMode.Mode newMode) {
+        onNavModeChangedInternal(newMode, false);
+    }
+
+    /**
+     * @param forceRegister if {@code true}, this will register {@link #mFrozenTaskListener} via
+     *                      {@link #setupOrientationSwipeHandler()}
+     */
+    private void onNavModeChangedInternal(SysUINavigationMode.Mode newMode, boolean forceRegister) {
         mDisplayController.removeChangeListener(this);
         mDisplayController.addChangeListener(this);
         onDisplayInfoChanged(mContext, mDisplayController.getInfo(), CHANGE_ALL);
 
         mOrientationTouchTransformer.setNavigationMode(newMode, mDisplayController.getInfo(),
-            mContext.getResources());
-        if (!mMode.hasGestures && newMode.hasGestures) {
+                mContext.getResources());
+
+        if (forceRegister || (!mMode.hasGestures && newMode.hasGestures)) {
             setupOrientationSwipeHandler();
         } else if (mMode.hasGestures && !newMode.hasGestures){
             destroyOrientationSwipeHandlerCallback();