Merge "Migrate Enhanced notifications to SwitchPreferenceCompat" into main
This commit is contained in:
@@ -174,7 +174,7 @@
|
|||||||
android:title="@string/notification_pulse_title"
|
android:title="@string/notification_pulse_title"
|
||||||
settings:controller="com.android.settings.notification.PulseNotificationPreferenceController"/>
|
settings:controller="com.android.settings.notification.PulseNotificationPreferenceController"/>
|
||||||
|
|
||||||
<SwitchPreference
|
<SwitchPreferenceCompat
|
||||||
android:key="notification_assistant"
|
android:key="notification_assistant"
|
||||||
android:order="25"
|
android:order="25"
|
||||||
android:title="@string/notification_assistant_title"
|
android:title="@string/notification_assistant_title"
|
||||||
|
@@ -18,44 +18,31 @@ package com.android.settings.notification;
|
|||||||
|
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
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.UserHandle;
|
||||||
import android.os.UserManager;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.service.notification.NotificationAssistantService;
|
|
||||||
|
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.TogglePreferenceController;
|
import com.android.settings.core.TogglePreferenceController;
|
||||||
import com.android.settingslib.PrimarySwitchPreference;
|
|
||||||
|
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class NotificationAssistantPreferenceController extends TogglePreferenceController {
|
public class NotificationAssistantPreferenceController extends TogglePreferenceController {
|
||||||
private static final String TAG = "NASPreferenceController";
|
private static final String TAG = "NASPreferenceController";
|
||||||
static final String KEY_NAS = "notification_assistant";
|
static final String KEY_NAS = "notification_assistant";
|
||||||
|
|
||||||
private final UserManager mUserManager;
|
|
||||||
private final PackageManager mPackageManager;
|
|
||||||
private Fragment mFragment;
|
private Fragment mFragment;
|
||||||
private int mUserId = UserHandle.myUserId();
|
private int mUserId = UserHandle.myUserId();
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected NotificationBackend mNotificationBackend;
|
protected NotificationBackend mNotificationBackend;
|
||||||
private ComponentName mDefaultNASComponent;
|
private ComponentName mDefaultNASComponent;
|
||||||
private Intent mNASSettingIntent;
|
|
||||||
|
|
||||||
public NotificationAssistantPreferenceController(Context context) {
|
public NotificationAssistantPreferenceController(Context context) {
|
||||||
super(context, KEY_NAS);
|
super(context, KEY_NAS);
|
||||||
mUserManager = UserManager.get(context);
|
|
||||||
mNotificationBackend = new NotificationBackend();
|
mNotificationBackend = new NotificationBackend();
|
||||||
mPackageManager = context.getPackageManager();
|
|
||||||
getDefaultNASIntent();
|
getDefaultNASIntent();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,12 +105,6 @@ public class NotificationAssistantPreferenceController extends TogglePreferenceC
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void getDefaultNASIntent() {
|
void getDefaultNASIntent() {
|
||||||
mDefaultNASComponent = mNotificationBackend.getDefaultNotificationAssistant();
|
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
|
@Override
|
||||||
@@ -136,7 +117,6 @@ public class NotificationAssistantPreferenceController extends TogglePreferenceC
|
|||||||
super.updateState(preference);
|
super.updateState(preference);
|
||||||
if (mDefaultNASComponent == null) {
|
if (mDefaultNASComponent == null) {
|
||||||
preference.setEnabled(false);
|
preference.setEnabled(false);
|
||||||
((PrimarySwitchPreference) preference).setSwitchEnabled(false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -16,18 +16,12 @@
|
|||||||
|
|
||||||
package com.android.settings.notification;
|
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.assertFalse;
|
||||||
import static org.junit.Assert.assertNotNull;
|
|
||||||
import static org.junit.Assert.assertNull;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.atLeastOnce;
|
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
@@ -35,24 +29,19 @@ import static org.mockito.Mockito.times;
|
|||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.app.Application;
|
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
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 android.provider.Settings;
|
||||||
|
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
import androidx.fragment.app.FragmentTransaction;
|
import androidx.fragment.app.FragmentTransaction;
|
||||||
import androidx.preference.PreferenceManager;
|
import androidx.preference.PreferenceManager;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
import androidx.preference.SwitchPreferenceCompat;
|
||||||
|
import androidx.preference.TwoStatePreference;
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
|
||||||
import com.android.settings.testutils.shadow.ShadowSecureSettings;
|
import com.android.settings.testutils.shadow.ShadowSecureSettings;
|
||||||
import com.android.settingslib.PrimarySwitchPreference;
|
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -61,12 +50,7 @@ import org.mockito.Answers;
|
|||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.RobolectricTestRunner;
|
import org.robolectric.RobolectricTestRunner;
|
||||||
import org.robolectric.Shadows;
|
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
import org.robolectric.shadows.ShadowApplication;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
|
|
||||||
@RunWith(RobolectricTestRunner.class)
|
@RunWith(RobolectricTestRunner.class)
|
||||||
@@ -86,27 +70,19 @@ public class NotificationAssistantPreferenceControllerTest {
|
|||||||
private FragmentTransaction mFragmentTransaction;
|
private FragmentTransaction mFragmentTransaction;
|
||||||
@Mock
|
@Mock
|
||||||
private NotificationBackend mBackend;
|
private NotificationBackend mBackend;
|
||||||
@Mock
|
|
||||||
private UserManager mUserManager;
|
|
||||||
@Mock
|
|
||||||
private PackageManager mPackageManager;
|
|
||||||
private NotificationAssistantPreferenceController mPreferenceController;
|
private NotificationAssistantPreferenceController mPreferenceController;
|
||||||
ComponentName mNASComponent = new ComponentName("pkgname", "clsname");
|
ComponentName mNASComponent = new ComponentName("pkgname", "clsname");
|
||||||
private PrimarySwitchPreference mPreference;
|
private TwoStatePreference mPreference;
|
||||||
private ShadowApplication mShadowApplication;
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||||
mPreference = spy(new PrimarySwitchPreference(mContext));
|
mPreference = spy(new SwitchPreferenceCompat(mContext));
|
||||||
mShadowApplication = ShadowApplication.getInstance();
|
|
||||||
mShadowApplication.setSystemService(Context.USER_SERVICE, mUserManager);
|
|
||||||
doReturn(mContext).when(mFragment).getContext();
|
doReturn(mContext).when(mFragment).getContext();
|
||||||
when(mFragment.getFragmentManager()).thenReturn(mFragmentManager);
|
when(mFragment.getFragmentManager()).thenReturn(mFragmentManager);
|
||||||
when(mFragmentManager.beginTransaction()).thenReturn(mFragmentTransaction);
|
when(mFragmentManager.beginTransaction()).thenReturn(mFragmentTransaction);
|
||||||
when(mBackend.getDefaultNotificationAssistant()).thenReturn(mNASComponent);
|
when(mBackend.getDefaultNotificationAssistant()).thenReturn(mNASComponent);
|
||||||
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
|
||||||
mPreferenceController = new NotificationAssistantPreferenceController(mContext);
|
mPreferenceController = new NotificationAssistantPreferenceController(mContext);
|
||||||
mPreferenceController.setBackend(mBackend);
|
mPreferenceController.setBackend(mBackend);
|
||||||
mPreferenceController.setFragment(mFragment);
|
mPreferenceController.setFragment(mFragment);
|
||||||
@@ -117,19 +93,6 @@ public class NotificationAssistantPreferenceControllerTest {
|
|||||||
mPreference.setKey(NotificationAssistantPreferenceController.KEY_NAS);
|
mPreference.setKey(NotificationAssistantPreferenceController.KEY_NAS);
|
||||||
screen.addPreference(mPreference);
|
screen.addPreference(mPreference);
|
||||||
mPreferenceController.displayPreference(screen);
|
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
|
@Test
|
||||||
|
Reference in New Issue
Block a user