Remove LooperMode.LEGACY usage from settings/applications path.

Bug: 331546577

Test: atest
Change-Id: I419100b302bee55a06fbc481232927ea44a68bd3
This commit is contained in:
Fan Wu
2024-03-27 15:28:05 +08:00
parent 9507bdb3ac
commit cf3649f21b
8 changed files with 79 additions and 46 deletions

View File

@@ -41,21 +41,24 @@ import android.os.UserManager;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
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.annotation.LooperMode;
import org.robolectric.shadows.ShadowApplication;
import java.util.Arrays;
import java.util.Collections;
@RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
public final class AppWithAdminGrantedPermissionsCounterTest {
@Rule
MockitoRule mMockitoRule = MockitoJUnit.rule();
private final String APP_1 = "app1";
private final String APP_2 = "app2";
private final String APP_3 = "app3";
@@ -99,7 +102,6 @@ public final class AppWithAdminGrantedPermissionsCounterTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
mApp1 = buildInfo(APP_1_UID, APP_1, 0 /* flags */, Build.VERSION_CODES.M);

View File

@@ -37,22 +37,27 @@ import android.os.UserHandle;
import android.os.UserManager;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
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.annotation.LooperMode;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.android.util.concurrent.PausedExecutorService;
import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.ShadowPausedAsyncTask;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
public final class AppWithAdminGrantedPermissionsListerTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private final String APP_1 = "app1";
private final String APP_2 = "app2";
private final String APP_3 = "app3";
@@ -85,10 +90,12 @@ public final class AppWithAdminGrantedPermissionsListerTest {
private DevicePolicyManager mDevicePolicyManager;
private List<UserAppInfo> mAppList = Collections.emptyList();
private PausedExecutorService mExecutorService;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mExecutorService = new PausedExecutorService();
ShadowPausedAsyncTask.overrideExecutor(mExecutorService);
}
@Test
@@ -185,9 +192,9 @@ public final class AppWithAdminGrantedPermissionsListerTest {
// List all apps installed that were granted one or more permissions by the
// admin.
(new AppWithAdminGrantedPermissionsListerTestable(PERMISSIONS)).execute();
mExecutorService.runAll();
ShadowLooper.idleMainLooper();
// Wait for the background task to finish.
ShadowApplication.runBackgroundTasks();
assertThat(mAppList.size()).isEqualTo(3);
InstalledAppListerTest.verifyListUniqueness(mAppList);

View File

@@ -55,12 +55,15 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
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.RuntimeEnvironment;
import org.robolectric.android.util.concurrent.PausedExecutorService;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.LooperMode;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.ShadowPausedAsyncTask;
import org.robolectric.util.ReflectionHelpers;
import java.util.ArrayList;
@@ -72,9 +75,11 @@ import java.util.Set;
* Tests for {@link ApplicationFeatureProviderImpl}.
*/
@RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
public final class ApplicationFeatureProviderImplTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@Rule
public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule();
@@ -114,11 +119,10 @@ public final class ApplicationFeatureProviderImplTest {
private int mAppCount = -1;
private List<UserAppInfo> mAppList = null;
private PausedExecutorService mExecutorService;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
when(mContext.getApplicationContext()).thenReturn(mContext);
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
when(mContext.getSystemService(Context.LOCATION_SERVICE)).thenReturn(mLocationManager);
@@ -126,6 +130,9 @@ public final class ApplicationFeatureProviderImplTest {
mProvider = new ApplicationFeatureProviderImpl(mContext, mPackageManager,
mPackageManagerService, mDevicePolicyManager, mWebViewUpdateServiceWrapper);
mExecutorService = new PausedExecutorService();
ShadowPausedAsyncTask.overrideExecutor(mExecutorService);
}
private void verifyCalculateNumberOfPolicyInstalledApps(boolean async) {
@@ -155,6 +162,8 @@ public final class ApplicationFeatureProviderImplTest {
mAppList = null;
mProvider.listPolicyInstalledApps((list) -> mAppList = list);
mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mAppList).isNotNull();
assertThat(mAppList.size()).isEqualTo(1);
assertThat(mAppList.get(0).appInfo.packageName).isEqualTo(APP_2);
@@ -231,6 +240,9 @@ public final class ApplicationFeatureProviderImplTest {
mAppList = null;
mProvider.listAppsWithAdminGrantedPermissions(new String[]{PERMISSION},
(list) -> mAppList = list);
mExecutorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mAppList).isNotNull();
assertThat(mAppList.size()).isEqualTo(2);
assertThat(Arrays.asList(mAppList.get(0).appInfo.packageName,

View File

@@ -50,7 +50,8 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentMatcher;
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.annotation.LooperMode;
import org.robolectric.shadows.ShadowApplication;
@@ -65,6 +66,9 @@ import java.util.Set;
@LooperMode(LooperMode.Mode.LEGACY)
public final class InstalledAppCounterTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String APP_1 = "app1";
private static final String APP_2 = "app2";
private static final String APP_3 = "app3";
@@ -103,7 +107,6 @@ public final class InstalledAppCounterTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
mFakeFeatureFlags = new FakeFeatureFlagsImpl();
mFakeFeatureFlags.setFlag(Flags.FLAG_ARCHIVING, true);

View File

@@ -36,15 +36,17 @@ import android.content.pm.UserInfo;
import android.os.UserHandle;
import android.os.UserManager;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentMatcher;
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.annotation.LooperMode;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.android.util.concurrent.PausedExecutorService;
import org.robolectric.shadows.ShadowLooper;
import org.robolectric.shadows.ShadowPausedAsyncTask;
import java.util.Arrays;
import java.util.Collections;
@@ -53,9 +55,11 @@ import java.util.List;
import java.util.Set;
@RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
public final class InstalledAppListerTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private final String APP_1 = "app1";
private final String APP_2 = "app2";
private final String APP_3 = "app3";
@@ -77,11 +81,6 @@ public final class InstalledAppListerTest {
private List<UserAppInfo> mInstalledAppList = Collections.emptyList();
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
private void expectQueryIntentActivities(int userId, String packageName, boolean launchable) {
when(mPackageManager.queryIntentActivitiesAsUser(
argThat(isLaunchIntentFor(packageName)),
@@ -94,6 +93,9 @@ public final class InstalledAppListerTest {
@Test
public void testCountInstalledAppsAcrossAllUsers() {
PausedExecutorService executorService = new PausedExecutorService();
ShadowPausedAsyncTask.overrideExecutor(executorService);
// There are two users.
when(mUserManager.getProfiles(UserHandle.myUserId())).thenReturn(Arrays.asList(
new UserInfo(MAIN_USER_ID, "main", UserInfo.FLAG_ADMIN),
@@ -155,8 +157,8 @@ public final class InstalledAppListerTest {
mInstalledAppList = Collections.emptyList();
final InstalledAppListerTestable counter = new InstalledAppListerTestable();
counter.execute();
// Wait for the background task to finish.
ShadowApplication.runBackgroundTasks();
executorService.runAll();
ShadowLooper.idleMainLooper();
assertThat(mInstalledAppList.size()).isEqualTo(3);

View File

@@ -35,6 +35,7 @@ import android.util.ArraySet;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowUtils;
@@ -42,22 +43,25 @@ import com.android.settingslib.widget.FooterPreference;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
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.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.LooperMode;
@RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
@Config(shadows = {
ShadowUtils.class,
com.android.settings.testutils.shadow.ShadowFragment.class,
})
public class OpenSupportedLinksTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
private static final String TEST_FOOTER_TITLE = "FooterTitle";
private static final String TEST_DOMAIN_LINK = "aaa.bbb.ccc";
private static final String TEST_SUMMARY = "TestSummary";
@@ -75,8 +79,7 @@ public class OpenSupportedLinksTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mContext = spy(ApplicationProvider.getApplicationContext());
mSettings = spy(new TestFragment(mContext, mPackageManager));
mCategory = spy(new PreferenceCategory(mContext));
mFooter = new FooterPreference.Builder(mContext).setTitle(TEST_FOOTER_TITLE).build();

View File

@@ -32,6 +32,7 @@ import android.content.pm.PackageManager;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
@@ -41,12 +42,10 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.LooperMode;
import org.robolectric.shadows.ShadowLooper;
@RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
@Config(shadows = ShadowAlertDialogCompat.class)
public class InstantAppButtonDialogFragmentTest {
@@ -58,9 +57,10 @@ public class InstantAppButtonDialogFragmentTest {
@Before
public void setUp() {
final FragmentActivity activity = Robolectric.setupActivity(FragmentActivity.class);
mContext = spy(RuntimeEnvironment.application);
mContext = spy(ApplicationProvider.getApplicationContext());
mFragment = InstantAppButtonDialogFragment.newInstance(TEST_PACKAGE);
mFragment.show(activity.getSupportFragmentManager(), "InstantAppButtonDialogFragment");
ShadowLooper.idleMainLooper();
}
@Test

View File

@@ -28,28 +28,32 @@ import android.content.Context;
import android.provider.Settings;
import androidx.lifecycle.LifecycleOwner;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.testutils.shadow.ShadowActivityManager;
import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
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.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.annotation.LooperMode;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowLooper;
@RunWith(RobolectricTestRunner.class)
@LooperMode(LooperMode.Mode.LEGACY)
@Config(shadows = {
ShadowActivityManager.class,
})
public class ZenAccessSettingObserverMixinTest {
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
@Mock
private ZenAccessSettingObserverMixin.Listener mListener;
@@ -60,8 +64,7 @@ public class ZenAccessSettingObserverMixinTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application);
mContext = spy(ApplicationProvider.getApplicationContext());
mLifecycleOwner = () -> mLifecycle;
mLifecycle = new Lifecycle(mLifecycleOwner);
@@ -80,6 +83,7 @@ public class ZenAccessSettingObserverMixinTest {
mContext.getContentResolver().notifyChange(Settings.Secure.getUriFor(
Settings.Secure.ENABLED_NOTIFICATION_LISTENERS), null);
ShadowLooper.idleMainLooper();
verify(mListener).onZenAccessPolicyChanged();
}