Provide a way to suppress page transitions.

Some pages are not suitable to apply the page transition, for example,
launching an acitivity that is depending on a value in the config file.

External apps that are not applying the same transition may be launched
in this case, applying the transition may lead to some unexpected
behaviour.

Hence, create a way to ignore the transition. Also refactor some logics.

Fixes: 189299479
Test: rebuild
Change-Id: Iebb47b9e0b0d9a3496f7e5f0c6cf1cd3d8d75031
diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java
index 4c45c5e..8c2621d 100644
--- a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java
+++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java
@@ -16,6 +16,8 @@
 
 package com.android.settingslib.collapsingtoolbar;
 
+import static com.android.settingslib.transition.SettingsTransitionHelper.EXTRA_PAGE_TRANSITION_TYPE;
+
 import android.app.ActivityOptions;
 import android.content.Intent;
 import android.os.Bundle;
@@ -28,6 +30,7 @@
 import androidx.fragment.app.FragmentActivity;
 
 import com.android.settingslib.transition.SettingsTransitionHelper;
+import com.android.settingslib.transition.SettingsTransitionHelper.TransitionType;
 
 /**
  * A base Activity for Settings-specific page transition. Activities extending it will get
@@ -35,7 +38,6 @@
  */
 public abstract class SettingsTransitionActivity extends FragmentActivity {
     private static final String TAG = "SettingsTransitionActivity";
-    private static final int DEFAULT_REQUEST = -1;
 
     private Toolbar mToolbar;
 
@@ -58,45 +60,17 @@
     }
 
     @Override
-    public void startActivity(Intent intent) {
-        if (!isSettingsTransitionEnabled()) {
-            super.startActivity(intent);
-            return;
-        }
-
-        super.startActivity(intent, createActivityOptionsBundleForTransition(null));
-    }
-
-    @Override
-    public void startActivity(Intent intent, @Nullable Bundle options) {
-        if (!isSettingsTransitionEnabled()) {
-            super.startActivity(intent, options);
-            return;
-        }
-
-        super.startActivity(intent, createActivityOptionsBundleForTransition(options));
-    }
-
-    @Override
-    public void startActivityForResult(Intent intent, int requestCode) {
-        if (!isSettingsTransitionEnabled() || requestCode == DEFAULT_REQUEST) {
-            super.startActivityForResult(intent, requestCode);
-            return;
-        }
-
-        super.startActivityForResult(intent, requestCode, createActivityOptionsBundleForTransition(
-                null));
-    }
-
-    @Override
     public void startActivityForResult(Intent intent, int requestCode, @Nullable Bundle options) {
-        if (!isSettingsTransitionEnabled() || requestCode == DEFAULT_REQUEST) {
+        final int transitionType = intent.getIntExtra(EXTRA_PAGE_TRANSITION_TYPE,
+                TransitionType.TRANSITION_SHARED_AXIS);
+        if (!isSettingsTransitionEnabled() ||
+                transitionType == TransitionType.TRANSITION_NONE) {
             super.startActivityForResult(intent, requestCode, options);
             return;
         }
 
-        super.startActivityForResult(intent, requestCode, createActivityOptionsBundleForTransition(
-                options));
+        super.startActivityForResult(intent, requestCode,
+                createActivityOptionsBundleForTransition(options));
     }
 
     protected boolean isSettingsTransitionEnabled() {
diff --git a/packages/SettingsLib/SettingsTransition/src/com/android/settingslib/transition/SettingsTransitionHelper.java b/packages/SettingsLib/SettingsTransition/src/com/android/settingslib/transition/SettingsTransitionHelper.java
index 3d93964..4612861 100644
--- a/packages/SettingsLib/SettingsTransition/src/com/android/settingslib/transition/SettingsTransitionHelper.java
+++ b/packages/SettingsLib/SettingsTransition/src/com/android/settingslib/transition/SettingsTransitionHelper.java
@@ -55,6 +55,8 @@
         int TRANSITION_FADE = 2;
     }
 
+    public static final String EXTRA_PAGE_TRANSITION_TYPE = "page_transition_type";
+
     private static final String TAG = "SettingsTransitionHelper";
     private static final long DURATION = 450L;
     private static final float FADE_THROUGH_THRESHOLD = 0.22F;