Remove LooperMode.LEGACY usage from settings/notification

Bug: 333808868

Test: atest
Change-Id: I11d68462adf60a02224306e848f9280cd1bdad4f
This commit is contained in:
Fan Wu
2024-04-11 03:29:19 +00:00
parent 0dcd61e926
commit 596d6dd99b
3 changed files with 55 additions and 25 deletions

View File

@@ -44,26 +44,27 @@ import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.mockito.stubbing.Answer; import org.mockito.stubbing.Answer;
import org.robolectric.Robolectric; import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.annotation.LooperMode;
import org.robolectric.shadows.ShadowApplication; import org.robolectric.shadows.ShadowApplication;
import org.robolectric.shadows.ShadowLooper;
import java.util.ArrayList; import java.util.ArrayList;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
@Config(shadows = {ShadowBluetoothUtils.class}) @Config(shadows = {ShadowBluetoothUtils.class})
public class NotificationAccessSettingsTest { public class NotificationAccessSettingsTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private Context mContext;
private NotificationAccessSettings mAccessSettings; private NotificationAccessSettings mAccessSettings;
@Mock @Mock
private NotificationManager mNotificationManager; private NotificationManager mNotificationManager;
@@ -72,9 +73,6 @@ public class NotificationAccessSettingsTest {
@Before @Before
public void setUp() throws Exception { public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
ShadowApplication shadowApp = ShadowApplication.getInstance(); ShadowApplication shadowApp = ShadowApplication.getInstance();
shadowApp.setSystemService(Context.NOTIFICATION_SERVICE, mNotificationManager); shadowApp.setSystemService(Context.NOTIFICATION_SERVICE, mNotificationManager);
@@ -92,6 +90,7 @@ public class NotificationAccessSettingsTest {
mAccessSettings.mNm = mNotificationManager; mAccessSettings.mNm = mNotificationManager;
mAccessSettings.mPm = mPackageManager; mAccessSettings.mPm = mPackageManager;
ShadowBluetoothUtils.sLocalBluetoothManager = mock(LocalBluetoothManager.class); ShadowBluetoothUtils.sLocalBluetoothManager = mock(LocalBluetoothManager.class);
ShadowLooper.idleMainLooper();
} }
@Test @Test

View File

@@ -42,21 +42,25 @@ import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.LooperMode; import org.robolectric.android.util.concurrent.PausedExecutorService;
import org.robolectric.shadows.ShadowApplication; import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.ShadowPausedAsyncTask;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
public class AppChannelsBypassingDndPreferenceControllerTest { public class AppChannelsBypassingDndPreferenceControllerTest {
@Rule @Rule
public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); public final SetFlagsRule mSetFlagsRule = new SetFlagsRule();
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@Mock @Mock
private NotificationBackend mBackend; private NotificationBackend mBackend;
@@ -65,11 +69,13 @@ public class AppChannelsBypassingDndPreferenceControllerTest {
private PreferenceScreen mPreferenceScreen; private PreferenceScreen mPreferenceScreen;
private PreferenceCategory mCategory; private PreferenceCategory mCategory;
private PausedExecutorService mExecutorService;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this);
Context context = ApplicationProvider.getApplicationContext(); Context context = ApplicationProvider.getApplicationContext();
mExecutorService = new PausedExecutorService();
ShadowPausedAsyncTask.overrideExecutor(mExecutorService);
mAppRow = new NotificationBackend.AppRow(); mAppRow = new NotificationBackend.AppRow();
mAppRow.uid = 42; mAppRow.uid = 42;
@@ -91,7 +97,8 @@ public class AppChannelsBypassingDndPreferenceControllerTest {
buildGroupList(true, true, false)); buildGroupList(true, true, false));
mController.displayPreference(mPreferenceScreen); mController.displayPreference(mPreferenceScreen);
ShadowApplication.runBackgroundTasks(); mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mCategory.getPreferenceCount()).isEqualTo(4); // "All" + 3 channels assertThat(mCategory.getPreferenceCount()).isEqualTo(4); // "All" + 3 channels
assertThat(mCategory.getPreference(0).getTitle().toString()).isEqualTo( assertThat(mCategory.getPreference(0).getTitle().toString()).isEqualTo(
@@ -107,7 +114,8 @@ public class AppChannelsBypassingDndPreferenceControllerTest {
buildGroupList(true, true, false)); buildGroupList(true, true, false));
mController.displayPreference(mPreferenceScreen); mController.displayPreference(mPreferenceScreen);
ShadowApplication.runBackgroundTasks(); mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mCategory.getPreference(0).isEnabled()).isTrue(); assertThat(mCategory.getPreference(0).isEnabled()).isTrue();
} }
@@ -118,7 +126,8 @@ public class AppChannelsBypassingDndPreferenceControllerTest {
buildGroupList(true, false, true)); buildGroupList(true, false, true));
mController.displayPreference(mPreferenceScreen); mController.displayPreference(mPreferenceScreen);
ShadowApplication.runBackgroundTasks(); mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(((PrimarySwitchPreference) mCategory.getPreference( assertThat(((PrimarySwitchPreference) mCategory.getPreference(
1)).isSwitchEnabled()).isTrue(); 1)).isSwitchEnabled()).isTrue();
@@ -135,7 +144,8 @@ public class AppChannelsBypassingDndPreferenceControllerTest {
buildGroupList(true, false, true)); buildGroupList(true, false, true));
mController.displayPreference(mPreferenceScreen); mController.displayPreference(mPreferenceScreen);
ShadowApplication.runBackgroundTasks(); mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mCategory.getPreference(0).isEnabled()).isFalse(); assertThat(mCategory.getPreference(0).isEnabled()).isFalse();
assertThat(((PrimarySwitchPreference) mCategory.getPreference( assertThat(((PrimarySwitchPreference) mCategory.getPreference(
@@ -185,7 +195,9 @@ public class AppChannelsBypassingDndPreferenceControllerTest {
when(mBackend.getGroups(eq(mAppRow.pkg), eq(mAppRow.uid))).thenReturn(groups); when(mBackend.getGroups(eq(mAppRow.pkg), eq(mAppRow.uid))).thenReturn(groups);
mController.displayPreference(mPreferenceScreen); mController.displayPreference(mPreferenceScreen);
ShadowApplication.runBackgroundTasks(); mExecutorService.runAll();
ShadowLooper.idleMainLooper();
// Check that we've added the group name as a summary to channels that have identical names. // Check that we've added the group name as a summary to channels that have identical names.
// Channels are also alphabetized. // Channels are also alphabetized.
assertThat(mCategory.getPreference(1).getTitle().toString()).isEqualTo("Mail"); assertThat(mCategory.getPreference(1).getTitle().toString()).isEqualTo("Mail");

View File

@@ -37,20 +37,24 @@ import androidx.test.core.app.ApplicationProvider;
import com.android.settings.notification.NotificationBackend; import com.android.settings.notification.NotificationBackend;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.LooperMode; import org.robolectric.android.util.concurrent.PausedExecutorService;
import org.robolectric.shadows.ShadowApplication; import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.ShadowPausedAsyncTask;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
public class AppConversationListPreferenceControllerTest { public class AppConversationListPreferenceControllerTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private Context mContext; private Context mContext;
@@ -60,11 +64,13 @@ public class AppConversationListPreferenceControllerTest {
private AppConversationListPreferenceController mController; private AppConversationListPreferenceController mController;
private NotificationBackend.AppRow mAppRow; private NotificationBackend.AppRow mAppRow;
private PreferenceCategory mPreference; private PreferenceCategory mPreference;
private PausedExecutorService mExecutorService;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = ApplicationProvider.getApplicationContext(); mContext = ApplicationProvider.getApplicationContext();
mExecutorService = new PausedExecutorService();
ShadowPausedAsyncTask.overrideExecutor(mExecutorService);
mAppRow = new NotificationBackend.AppRow(); mAppRow = new NotificationBackend.AppRow();
mAppRow.uid = 42; mAppRow.uid = 42;
@@ -88,7 +94,8 @@ public class AppConversationListPreferenceControllerTest {
)); ));
mController.updateState(mPreference); mController.updateState(mPreference);
ShadowApplication.runBackgroundTasks(); mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mPreference.isVisible()).isTrue(); assertThat(mPreference.isVisible()).isTrue();
assertThat(mPreference.getPreferenceCount()).isEqualTo(2); assertThat(mPreference.getPreferenceCount()).isEqualTo(2);
@@ -107,7 +114,8 @@ public class AppConversationListPreferenceControllerTest {
)); ));
mController.updateState(mPreference); mController.updateState(mPreference);
ShadowApplication.runBackgroundTasks(); mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mPreference.isVisible()).isTrue(); assertThat(mPreference.isVisible()).isTrue();
assertThat(mPreference.getPreferenceCount()).isEqualTo(1); assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
@@ -120,6 +128,8 @@ public class AppConversationListPreferenceControllerTest {
.thenReturn(conversationList()); .thenReturn(conversationList());
mController.updateState(mPreference); mController.updateState(mPreference);
mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mPreference.isVisible()).isFalse(); assertThat(mPreference.isVisible()).isFalse();
assertThat(mPreference.getPreferenceCount()).isEqualTo(0); assertThat(mPreference.getPreferenceCount()).isEqualTo(0);
@@ -130,6 +140,9 @@ public class AppConversationListPreferenceControllerTest {
when(mBackend.getConversations(eq(mAppRow.pkg), eq(mAppRow.uid))) when(mBackend.getConversations(eq(mAppRow.pkg), eq(mAppRow.uid)))
.thenReturn(conversationList()); .thenReturn(conversationList());
mController.updateState(mPreference); mController.updateState(mPreference);
mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mPreference.isVisible()).isFalse(); assertThat(mPreference.isVisible()).isFalse();
// Empty -> present // Empty -> present
@@ -138,6 +151,9 @@ public class AppConversationListPreferenceControllerTest {
conversationChannel("1", "msg", "Mario", "Messages", "M", false) conversationChannel("1", "msg", "Mario", "Messages", "M", false)
)); ));
mController.updateState(mPreference); mController.updateState(mPreference);
mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mPreference.isVisible()).isTrue(); assertThat(mPreference.isVisible()).isTrue();
assertThat(mPreference.getPreferenceCount()).isEqualTo(1); assertThat(mPreference.getPreferenceCount()).isEqualTo(1);
@@ -145,6 +161,9 @@ public class AppConversationListPreferenceControllerTest {
when(mBackend.getConversations(eq(mAppRow.pkg), eq(mAppRow.uid))) when(mBackend.getConversations(eq(mAppRow.pkg), eq(mAppRow.uid)))
.thenReturn(conversationList()); .thenReturn(conversationList());
mController.updateState(mPreference); mController.updateState(mPreference);
mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mPreference.isVisible()).isFalse(); assertThat(mPreference.isVisible()).isFalse();
assertThat(mPreference.getPreferenceCount()).isEqualTo(0); assertThat(mPreference.getPreferenceCount()).isEqualTo(0);
} }