Implemented GoogleMainActivity.

This Activity is only visible if you flip the flag in the AndroidManifest.

Bug: 72525324
Test: implemented
PiperOrigin-RevId: 184719387
Change-Id: I88d7ee1be537cbe5aa5cd4ee5a8f84d56bddb757
diff --git a/java/com/android/dialer/configprovider/ConfigProviderComponent.java b/java/com/android/dialer/configprovider/ConfigProviderComponent.java
index e26a5cf..10d52e7 100644
--- a/java/com/android/dialer/configprovider/ConfigProviderComponent.java
+++ b/java/com/android/dialer/configprovider/ConfigProviderComponent.java
@@ -26,6 +26,7 @@
 public abstract class ConfigProviderComponent {
 
   @NonNull
+  @Deprecated // Use ConfigProviderBindings instead
   public abstract ConfigProvider getConfigProvider();
 
   public static ConfigProviderComponent get(Context context) {
diff --git a/java/com/android/dialer/main/Main.java b/java/com/android/dialer/main/Main.java
index 14ac7e4..e7295f1 100644
--- a/java/com/android/dialer/main/Main.java
+++ b/java/com/android/dialer/main/Main.java
@@ -20,8 +20,11 @@
 
 /** Used to display the main activity for Dialer. This hosts favorites, dial pad, search, etc... */
 public interface Main {
+
   boolean isNewUiEnabled(Context context);
 
   // TODO(38502365): Remove this when we're ready to launch the new UI. */
   void createNewUiLauncherShortcut(Context context);
+
+  void disableComponentForTesting(Context context);
 }
diff --git a/java/com/android/dialer/main/impl/MainActivity.java b/java/com/android/dialer/main/impl/MainActivity.java
index 85f9c9f..ac2cb38 100644
--- a/java/com/android/dialer/main/impl/MainActivity.java
+++ b/java/com/android/dialer/main/impl/MainActivity.java
@@ -21,7 +21,7 @@
 import android.os.Bundle;
 import com.android.dialer.common.Assert;
 import com.android.dialer.common.LogUtil;
-import com.android.dialer.configprovider.ConfigProviderComponent;
+import com.android.dialer.configprovider.ConfigProviderBindings;
 import com.android.dialer.interactions.PhoneNumberInteraction.DisambigDialogDismissedListener;
 import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorCode;
 import com.android.dialer.interactions.PhoneNumberInteraction.InteractionErrorListener;
@@ -31,7 +31,7 @@
 
 /** This is the main activity for dialer. It hosts favorites, call log, search, dialpad, etc... */
 // TODO(calderwoodra): Do not extend TransactionSafeActivity after new SpeedDial is launched
-public final class MainActivity extends TransactionSafeActivity
+public class MainActivity extends TransactionSafeActivity
     implements MainActivityPeer.PeerSupplier,
         // TODO(calderwoodra): remove these 2 interfaces when we migrate to new speed dial fragment
         InteractionErrorListener,
@@ -45,9 +45,7 @@
 
   /** Returns intent that will open MainActivity to the specified tab. */
   public static Intent getShowTabIntent(Context context, @TabIndex int tabIndex) {
-    if (ConfigProviderComponent.get(context)
-        .getConfigProvider()
-        .getBoolean("nui_peer_enabled", false)) {
+    if (ConfigProviderBindings.get(context).getBoolean("nui_peer_enabled", false)) {
       // TODO(calderwoodra): implement this in NewMainActivityPeer
       return null;
     }
@@ -68,16 +66,19 @@
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     LogUtil.enterBlock("MainActivity.onCreate");
-    if (ConfigProviderComponent.get(this)
-        .getConfigProvider()
-        .getBoolean("nui_peer_enabled", false)) {
-      activePeer = new NewMainActivityPeer(this);
-    } else {
-      activePeer = new OldMainActivityPeer(this);
-    }
+    // If peer was set by the super, don't reset it.
+    activePeer = getNewPeer();
     activePeer.onActivityCreate(savedInstanceState);
   }
 
+  protected MainActivityPeer getNewPeer() {
+    if (ConfigProviderBindings.get(this).getBoolean("nui_peer_enabled", false)) {
+      return new NewMainActivityPeer(this);
+    } else {
+      return new OldMainActivityPeer(this);
+    }
+  }
+
   @Override
   protected void onNewIntent(Intent intent) {
     super.onNewIntent(intent);
diff --git a/java/com/android/dialer/main/impl/MainImpl.java b/java/com/android/dialer/main/impl/MainImpl.java
index e6d9a43..1cd457c 100644
--- a/java/com/android/dialer/main/impl/MainImpl.java
+++ b/java/com/android/dialer/main/impl/MainImpl.java
@@ -66,6 +66,16 @@
             PackageManager.DONT_KILL_APP);
   }
 
+  @Override
+  public void disableComponentForTesting(Context context) {
+    context
+        .getPackageManager()
+        .setComponentEnabledSetting(
+            new ComponentName(context, MainActivity.class),
+            PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+            PackageManager.DONT_KILL_APP);
+  }
+
   @TargetApi(VERSION_CODES.O)
   private static void createLauncherShortcutO(Context context) {
     ShortcutInfoCompat shortcutInfo =