Migrate Enhanced notifications to SwitchPreferenceCompat

Settings use SwitchPreferenceCompat instead of SwitchPreference in the
future, for new Material 3 UI.

Also clean up unused fields in its controller.

Bug: 306658427
Test: manual - on Notifications page
Change-Id: I0c4dd3f088e68852a1f63ed46447c306f7c0f65a
diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml
index c52140c..59c0c21 100644
--- a/res/xml/configure_notification_settings.xml
+++ b/res/xml/configure_notification_settings.xml
@@ -174,7 +174,7 @@
             android:title="@string/notification_pulse_title"
             settings:controller="com.android.settings.notification.PulseNotificationPreferenceController"/>
 
-        <SwitchPreference
+        <SwitchPreferenceCompat
             android:key="notification_assistant"
             android:order="25"
             android:title="@string/notification_assistant_title"
diff --git a/src/com/android/settings/notification/NotificationAssistantPreferenceController.java b/src/com/android/settings/notification/NotificationAssistantPreferenceController.java
index 3274aec..6f246b7 100644
--- a/src/com/android/settings/notification/NotificationAssistantPreferenceController.java
+++ b/src/com/android/settings/notification/NotificationAssistantPreferenceController.java
@@ -18,44 +18,31 @@
 
 import android.content.ComponentName;
 import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
 import android.os.UserHandle;
-import android.os.UserManager;
 import android.provider.Settings;
-import android.service.notification.NotificationAssistantService;
 
 import androidx.fragment.app.Fragment;
 import androidx.preference.Preference;
 
 import com.android.settings.R;
 import com.android.settings.core.TogglePreferenceController;
-import com.android.settingslib.PrimarySwitchPreference;
 
 import com.google.common.annotations.VisibleForTesting;
 
-import java.util.List;
-
 public class NotificationAssistantPreferenceController extends TogglePreferenceController {
     private static final String TAG = "NASPreferenceController";
     static final String KEY_NAS = "notification_assistant";
 
-    private final UserManager mUserManager;
-    private final PackageManager mPackageManager;
     private Fragment mFragment;
     private int mUserId = UserHandle.myUserId();
 
     @VisibleForTesting
     protected NotificationBackend mNotificationBackend;
     private ComponentName mDefaultNASComponent;
-    private Intent mNASSettingIntent;
 
     public NotificationAssistantPreferenceController(Context context) {
         super(context, KEY_NAS);
-        mUserManager = UserManager.get(context);
         mNotificationBackend = new NotificationBackend();
-        mPackageManager = context.getPackageManager();
         getDefaultNASIntent();
     }
 
@@ -118,12 +105,6 @@
     @VisibleForTesting
     void getDefaultNASIntent() {
         mDefaultNASComponent = mNotificationBackend.getDefaultNotificationAssistant();
-        if (mDefaultNASComponent != null) {
-            mNASSettingIntent = new Intent(
-                    NotificationAssistantService.ACTION_NOTIFICATION_ASSISTANT_DETAIL_SETTINGS);
-            mNASSettingIntent.setPackage(mDefaultNASComponent.getPackageName());
-            mNASSettingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        }
     }
 
     @Override
@@ -136,7 +117,6 @@
         super.updateState(preference);
         if (mDefaultNASComponent == null) {
             preference.setEnabled(false);
-            ((PrimarySwitchPreference) preference).setSwitchEnabled(false);
         }
     }
 }
diff --git a/tests/robotests/src/com/android/settings/notification/NotificationAssistantPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/NotificationAssistantPreferenceControllerTest.java
index 5f506b8..7606057 100644
--- a/tests/robotests/src/com/android/settings/notification/NotificationAssistantPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/NotificationAssistantPreferenceControllerTest.java
@@ -16,18 +16,12 @@
 
 package com.android.settings.notification;
 
-import static android.service.notification.NotificationAssistantService.ACTION_NOTIFICATION_ASSISTANT_DETAIL_SETTINGS;
-
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.spy;
@@ -35,24 +29,19 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.app.Application;
 import android.content.ComponentName;
 import android.content.Context;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.os.UserManager;
 import android.provider.Settings;
 
 import androidx.fragment.app.FragmentManager;
 import androidx.fragment.app.FragmentTransaction;
 import androidx.preference.PreferenceManager;
 import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreferenceCompat;
+import androidx.preference.TwoStatePreference;
 import androidx.test.core.app.ApplicationProvider;
 
 import com.android.settings.testutils.shadow.ShadowSecureSettings;
-import com.android.settingslib.PrimarySwitchPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -61,12 +50,7 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
-import org.robolectric.Shadows;
 import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowApplication;
-
-import java.util.ArrayList;
-import java.util.List;
 
 
 @RunWith(RobolectricTestRunner.class)
@@ -86,27 +70,19 @@
     private FragmentTransaction mFragmentTransaction;
     @Mock
     private NotificationBackend mBackend;
-    @Mock
-    private UserManager mUserManager;
-    @Mock
-    private PackageManager mPackageManager;
     private NotificationAssistantPreferenceController mPreferenceController;
     ComponentName mNASComponent = new ComponentName("pkgname", "clsname");
-    private PrimarySwitchPreference mPreference;
-    private ShadowApplication mShadowApplication;
+    private TwoStatePreference mPreference;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         mContext = spy(ApplicationProvider.getApplicationContext());
-        mPreference = spy(new PrimarySwitchPreference(mContext));
-        mShadowApplication = ShadowApplication.getInstance();
-        mShadowApplication.setSystemService(Context.USER_SERVICE, mUserManager);
+        mPreference = spy(new SwitchPreferenceCompat(mContext));
         doReturn(mContext).when(mFragment).getContext();
         when(mFragment.getFragmentManager()).thenReturn(mFragmentManager);
         when(mFragmentManager.beginTransaction()).thenReturn(mFragmentTransaction);
         when(mBackend.getDefaultNotificationAssistant()).thenReturn(mNASComponent);
-        when(mContext.getPackageManager()).thenReturn(mPackageManager);
         mPreferenceController = new NotificationAssistantPreferenceController(mContext);
         mPreferenceController.setBackend(mBackend);
         mPreferenceController.setFragment(mFragment);
@@ -117,19 +93,6 @@
         mPreference.setKey(NotificationAssistantPreferenceController.KEY_NAS);
         screen.addPreference(mPreference);
         mPreferenceController.displayPreference(screen);
-
-        when(mUserManager.getProfileIds(eq(0), anyBoolean())).thenReturn(new int[] {0, 10});
-        when(mUserManager.getProfileIds(eq(20), anyBoolean())).thenReturn(new int[] {20});
-
-        ActivityInfo activityInfo1 = new ActivityInfo();
-        activityInfo1.packageName = "pkgname";
-        activityInfo1.name = "name";
-        ResolveInfo resolveInfo1 = new ResolveInfo();
-        resolveInfo1.activityInfo = activityInfo1;
-        List<ResolveInfo> resolvers1 = new ArrayList<>();
-        resolvers1.add(resolveInfo1);
-        when(mPackageManager.queryIntentActivities(any(Intent.class), any()))
-                .thenReturn(resolvers1);
     }
 
     @Test