Merge "Remove LooperMode.LEGACY usage" into main

This commit is contained in:
Fan Wu
2024-04-09 08:34:36 +00:00
committed by Android (Google) Code Review
3 changed files with 45 additions and 21 deletions

View File

@@ -30,19 +30,23 @@ import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner; import org.robolectric.RobolectricTestRunner;
import org.robolectric.android.util.concurrent.PausedExecutorService;
import org.robolectric.annotation.Config; import org.robolectric.annotation.Config;
import org.robolectric.annotation.LooperMode; import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.ShadowPausedAsyncTask;
import org.robolectric.shadows.androidx.fragment.FragmentController; import org.robolectric.shadows.androidx.fragment.FragmentController;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
@Config(shadows = ShadowStorageManager.class) @Config(shadows = ShadowStorageManager.class)
public class PrivateVolumeUnmountTest { public class PrivateVolumeUnmountTest {
private PrivateVolumeUnmount mFragment; private PrivateVolumeUnmount mFragment;
private PausedExecutorService mExecutorService;
@Before @Before
public void setUp() { public void setUp() {
mExecutorService = new PausedExecutorService();
ShadowPausedAsyncTask.overrideExecutor(mExecutorService);
Bundle bundle = new Bundle(); Bundle bundle = new Bundle();
bundle.putString(VolumeInfo.EXTRA_VOLUME_ID, "id"); bundle.putString(VolumeInfo.EXTRA_VOLUME_ID, "id");
mFragment = FragmentController.of(new PrivateVolumeUnmount(), bundle) mFragment = FragmentController.of(new PrivateVolumeUnmount(), bundle)
@@ -65,6 +69,8 @@ public class PrivateVolumeUnmountTest {
final Button confirm = mFragment.getView().findViewById(R.id.confirm); final Button confirm = mFragment.getView().findViewById(R.id.confirm);
confirm.performClick(); confirm.performClick();
mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(ShadowStorageManager.isUnmountCalled()).isTrue(); assertThat(ShadowStorageManager.isUnmountCalled()).isTrue();
} }

View File

@@ -37,6 +37,7 @@ import android.os.UserHandle;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.SettingsPreferenceFragment;
@@ -46,23 +47,27 @@ import com.android.settings.testutils.ApplicationTestUtils;
import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.FakeFeatureFactory;
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.ArgumentCaptor; import org.mockito.ArgumentCaptor;
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.RuntimeEnvironment; import org.robolectric.android.util.concurrent.PausedExecutorService;
import org.robolectric.annotation.LooperMode; import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.ShadowApplication; import org.robolectric.shadows.ShadowPausedAsyncTask;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
public class EnterpriseSetDefaultAppsListPreferenceControllerTest { public class EnterpriseSetDefaultAppsListPreferenceControllerTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final int USER_ID = 0; private static final int USER_ID = 0;
private static final int APP_UID = 0; private static final int APP_UID = 0;
@@ -82,11 +87,13 @@ public class EnterpriseSetDefaultAppsListPreferenceControllerTest {
private Context mContext; private Context mContext;
private FakeFeatureFactory mFeatureFactory; private FakeFeatureFactory mFeatureFactory;
private PausedExecutorService mExecutorService;
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); mExecutorService = new PausedExecutorService();
mContext = spy(RuntimeEnvironment.application); ShadowPausedAsyncTask.overrideExecutor(mExecutorService);
mContext = spy(ApplicationProvider.getApplicationContext());
mFeatureFactory = FakeFeatureFactory.setupForTest(); mFeatureFactory = FakeFeatureFactory.setupForTest();
when(mFragment.getPreferenceScreen()).thenReturn(mScreen); when(mFragment.getPreferenceScreen()).thenReturn(mScreen);
when(mPrefenceManager.getContext()).thenReturn(mContext); when(mPrefenceManager.getContext()).thenReturn(mContext);
@@ -127,7 +134,8 @@ public class EnterpriseSetDefaultAppsListPreferenceControllerTest {
new UserAppInfo(user, appInfo2))); new UserAppInfo(user, appInfo2)));
new EnterpriseSetDefaultAppsListPreferenceController(mContext, mFragment, mPackageManager); new EnterpriseSetDefaultAppsListPreferenceController(mContext, mFragment, mPackageManager);
ShadowApplication.runBackgroundTasks(); mExecutorService.runAll();
ShadowLooper.idleMainLooper();
ArgumentCaptor<Preference> apps = ArgumentCaptor.forClass(Preference.class); ArgumentCaptor<Preference> apps = ArgumentCaptor.forClass(Preference.class);
verify(mScreen, times(2)).addPreference(apps.capture()); verify(mScreen, times(2)).addPreference(apps.capture());

View File

@@ -41,19 +41,24 @@ import android.os.RemoteException;
import android.os.UserManager; import android.os.UserManager;
import android.text.format.DateUtils; import android.text.format.DateUtils;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventEntity; import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventEntity;
import org.junit.After; import org.junit.After;
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.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Captor; import org.mockito.Captor;
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.RuntimeEnvironment; import org.robolectric.android.util.concurrent.PausedExecutorService;
import org.robolectric.annotation.LooperMode; 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;
@@ -65,10 +70,14 @@ import java.util.function.Supplier;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public final class DataProcessManagerTest { public final class DataProcessManagerTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String FAKE_ENTRY_KEY = "fake_entry_key"; private static final String FAKE_ENTRY_KEY = "fake_entry_key";
private Context mContext; private Context mContext;
private DataProcessManager mDataProcessManager; private DataProcessManager mDataProcessManager;
private PausedExecutorService mExecutorService;
@Mock private UserIdsSeries mUserIdsSeries; @Mock private UserIdsSeries mUserIdsSeries;
@Mock private IUsageStatsManager mUsageStatsManager; @Mock private IUsageStatsManager mUsageStatsManager;
@@ -80,9 +89,9 @@ public final class DataProcessManagerTest {
@Before @Before
public void setUp() { public void setUp() {
MockitoAnnotations.initMocks(this); mExecutorService = new PausedExecutorService();
ShadowPausedAsyncTask.overrideExecutor(mExecutorService);
mContext = spy(RuntimeEnvironment.application); mContext = spy(ApplicationProvider.getApplicationContext());
DataProcessor.sTestSystemAppsPackageNames = Set.of(); DataProcessor.sTestSystemAppsPackageNames = Set.of();
DataProcessor.sUsageStatsManager = mUsageStatsManager; DataProcessor.sUsageStatsManager = mUsageStatsManager;
doReturn(mContext).when(mContext).getApplicationContext(); doReturn(mContext).when(mContext).getApplicationContext();
@@ -117,7 +126,6 @@ public final class DataProcessManagerTest {
} }
@Test @Test
@LooperMode(LooperMode.Mode.LEGACY)
public void constructor_noLevelData() { public void constructor_noLevelData() {
final DataProcessManager dataProcessManager = final DataProcessManager dataProcessManager =
new DataProcessManager( new DataProcessManager(
@@ -129,7 +137,6 @@ public final class DataProcessManagerTest {
} }
@Test @Test
@LooperMode(LooperMode.Mode.LEGACY)
public void start_loadEmptyDatabaseAppUsageData() { public void start_loadEmptyDatabaseAppUsageData() {
final MatrixCursor cursor = final MatrixCursor cursor =
new MatrixCursor( new MatrixCursor(
@@ -142,6 +149,8 @@ public final class DataProcessManagerTest {
doReturn(true).when(mUserManager).isUserUnlocked(anyInt()); doReturn(true).when(mUserManager).isUserUnlocked(anyInt());
mDataProcessManager.start(); mDataProcessManager.start();
mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mDataProcessManager.getIsCurrentAppUsageLoaded()).isTrue(); assertThat(mDataProcessManager.getIsCurrentAppUsageLoaded()).isTrue();
assertThat(mDataProcessManager.getIsDatabaseAppUsageLoaded()).isTrue(); assertThat(mDataProcessManager.getIsDatabaseAppUsageLoaded()).isTrue();
@@ -152,7 +161,6 @@ public final class DataProcessManagerTest {
} }
@Test @Test
@LooperMode(LooperMode.Mode.LEGACY)
public void start_loadExpectedAppUsageData() throws RemoteException { public void start_loadExpectedAppUsageData() throws RemoteException {
final List<BatteryLevelData.PeriodBatteryLevelData> hourlyBatteryLevelsPerDay = final List<BatteryLevelData.PeriodBatteryLevelData> hourlyBatteryLevelsPerDay =
new ArrayList<>(); new ArrayList<>();
@@ -254,6 +262,8 @@ public final class DataProcessManagerTest {
hourlyBatteryLevelsPerDay, hourlyBatteryLevelsPerDay,
/* batteryHistoryMap= */ new HashMap<>()); /* batteryHistoryMap= */ new HashMap<>());
dataProcessManager.start(); dataProcessManager.start();
mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(dataProcessManager.getIsCurrentAppUsageLoaded()).isTrue(); assertThat(dataProcessManager.getIsCurrentAppUsageLoaded()).isTrue();
assertThat(dataProcessManager.getIsDatabaseAppUsageLoaded()).isTrue(); assertThat(dataProcessManager.getIsDatabaseAppUsageLoaded()).isTrue();
@@ -301,7 +311,6 @@ public final class DataProcessManagerTest {
} }
@Test @Test
@LooperMode(LooperMode.Mode.LEGACY)
public void start_currentUserLocked_emptyAppUsageList() throws RemoteException { public void start_currentUserLocked_emptyAppUsageList() throws RemoteException {
final UsageEvents.Event event = final UsageEvents.Event event =
getUsageEvent(UsageEvents.Event.ACTIVITY_RESUMED, /* timestamp= */ 1, "package"); getUsageEvent(UsageEvents.Event.ACTIVITY_RESUMED, /* timestamp= */ 1, "package");
@@ -323,6 +332,8 @@ public final class DataProcessManagerTest {
DatabaseUtils.sFakeSupplier = () -> cursor; DatabaseUtils.sFakeSupplier = () -> cursor;
mDataProcessManager.start(); mDataProcessManager.start();
mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mDataProcessManager.getAppUsageEventList()).isEmpty(); assertThat(mDataProcessManager.getAppUsageEventList()).isEmpty();
assertThat(mDataProcessManager.getAppUsagePeriodMap()).isNull(); assertThat(mDataProcessManager.getAppUsagePeriodMap()).isNull();
@@ -330,7 +341,6 @@ public final class DataProcessManagerTest {
} }
@Test @Test
@LooperMode(LooperMode.Mode.LEGACY)
public void getBatteryLevelData_emptyHistoryMap_returnNull() { public void getBatteryLevelData_emptyHistoryMap_returnNull() {
assertThat( assertThat(
DataProcessManager.getBatteryLevelData( DataProcessManager.getBatteryLevelData(