Start deep link page synchronously in SettingsActivity

- Use a synchronous API to make SettingsActivity start deep link intent
  in onCreate
- Change SettingsHomepageActivity from an alias to a real activity
- Clean up redundant codes

Fix: 206585572
Test: Manual, robotest build pass
Change-Id: Idf42c026f593bb5801a13cae250d1523030b7092
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index c216258..2b5f695 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -58,7 +58,6 @@
 import com.android.internal.util.ArrayUtils;
 import com.android.settings.Settings.WifiSettingsActivity;
 import com.android.settings.activityembedding.ActivityEmbeddingUtils;
-import com.android.settings.activityembedding.SplitStateObserver;
 import com.android.settings.applications.manageapplications.ManageApplications;
 import com.android.settings.core.OnActivityResultListener;
 import com.android.settings.core.SettingsBaseActivity;
@@ -248,16 +247,21 @@
 
     @Override
     protected void onCreate(Bundle savedState) {
-        super.onCreate(savedState);
-        Log.d(LOG_TAG, "Starting onCreate");
-
-        long startTime = System.currentTimeMillis();
-
         // Should happen before any call to getIntent()
         getMetaData();
         final Intent intent = getIntent();
 
-        registerSplitStateObserverForTwoPaneDeepLink();
+        if (shouldShowTwoPaneDeepLink(intent)) {
+            launchHomepageForTwoPaneDeepLink(intent);
+            finishAndRemoveTask();
+            super.onCreate(savedState);
+            return;
+        }
+
+        super.onCreate(savedState);
+        Log.d(LOG_TAG, "Starting onCreate");
+
+        long startTime = System.currentTimeMillis();
 
         final FeatureFactory factory = FeatureFactory.getFactory(this);
         mDashboardFeatureProvider = factory.getDashboardFeatureProvider(this);
@@ -362,30 +366,6 @@
         }
     }
 
-    private void registerSplitStateObserverForTwoPaneDeepLink() {
-        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)) {
-            return;
-        }
-
-        final SplitStateObserver splitStateObserver = new SplitStateObserver(this /* activity*/,
-                true /* listenOnce */,
-                splitInfos -> {
-                    if (!splitInfos.isEmpty() || !SettingsActivity.this.isTaskRoot()) {
-                        // It's already in 2-pane or in a non-empty task, there is no need to go
-                        // 2-pane deep link flow.
-                        return;
-                    }
-
-                    if (shouldShowTwoPaneDeepLink(getIntent())) {
-                        launchHomepageForTwoPaneDeepLink(getIntent());
-                        finishAndRemoveTask();
-                        return;
-                    }
-                }
-            );
-        getLifecycle().addObserver(splitStateObserver);
-    }
-
     private boolean isSubSettings(Intent intent) {
         return this instanceof SubSettings ||
             intent.getBooleanExtra(EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, false);
@@ -435,6 +415,15 @@
     }
 
     private boolean shouldShowTwoPaneDeepLink(Intent intent) {
+        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)) {
+            return false;
+        }
+
+        // If the activity is not the task root, it should not start trampoline for deep links.
+        if (!isTaskRoot()) {
+            return false;
+        }
+
         // Only starts trampoline for deep links. Should return false for all the cases that
         // Settings app starts SettingsActivity or SubSetting by itself.
         if (intent.getAction() == null) {