From 39d87927dedfb0aa67914b761f0a221c09ca7d9c Mon Sep 17 00:00:00 2001 From: Fan Wu Date: Wed, 27 Mar 2024 18:45:34 +0800 Subject: [PATCH] Remove LooperMode.LEGACY usage from settings/development Bug: 331566352 Test: atest Change-Id: I3be4baff5cf556a875af8b4410cc2dd870fd290c --- ...VendorLoggingPreferenceControllerTest.java | 20 +++++--- ...erlayCategoryPreferenceControllerTest.java | 48 +++++++++++++------ 2 files changed, 47 insertions(+), 21 deletions(-) diff --git a/tests/robotests/src/com/android/settings/development/EnableVerboseVendorLoggingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/EnableVerboseVendorLoggingPreferenceControllerTest.java index 97acdf692fc..4ac059d45c2 100644 --- a/tests/robotests/src/com/android/settings/development/EnableVerboseVendorLoggingPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/EnableVerboseVendorLoggingPreferenceControllerTest.java @@ -28,21 +28,26 @@ import android.hardware.dumpstate.V1_1.IDumpstateDevice; import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; +import androidx.test.core.app.ApplicationProvider; 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.LooperMode; +import org.robolectric.shadows.ShadowLooper; import java.lang.reflect.Field; @RunWith(RobolectricTestRunner.class) -@LooperMode(LooperMode.Mode.LEGACY) public final class EnableVerboseVendorLoggingPreferenceControllerTest { + + @Rule + public final MockitoRule mMockitoRule = MockitoJUnit.rule(); + @Mock private SwitchPreference mPreference; @Mock @@ -57,8 +62,7 @@ public final class EnableVerboseVendorLoggingPreferenceControllerTest { @Before public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - mContext = RuntimeEnvironment.application; + mContext = ApplicationProvider.getApplicationContext(); mController = spy(new EnableVerboseVendorLoggingPreferenceController(mContext)); doReturn(mIDumpstateDevice).when(mController).getDumpstateDeviceService(); doReturn(mIDumpstateDeviceAidl).when(mController).getDumpstateDeviceAidlService(); @@ -129,6 +133,7 @@ public final class EnableVerboseVendorLoggingPreferenceControllerTest { mController.setVerboseLoggingEnabled(false); mController.updateState(mPreference); + ShadowLooper.idleMainLooper(); verify(mPreference).setChecked(false); } @@ -140,6 +145,7 @@ public final class EnableVerboseVendorLoggingPreferenceControllerTest { mController.setVerboseLoggingEnabled(false); mController.updateState(mPreference); + ShadowLooper.idleMainLooper(); verify(mPreference).setChecked(false); } @@ -151,6 +157,7 @@ public final class EnableVerboseVendorLoggingPreferenceControllerTest { mController.setVerboseLoggingEnabled(true); mController.updateState(mPreference); + ShadowLooper.idleMainLooper(); verify(mPreference).setChecked(true); } @@ -162,6 +169,7 @@ public final class EnableVerboseVendorLoggingPreferenceControllerTest { mController.setVerboseLoggingEnabled(true); mController.updateState(mPreference); + ShadowLooper.idleMainLooper(); verify(mPreference).setChecked(true); } diff --git a/tests/robotests/src/com/android/settings/development/OverlayCategoryPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/development/OverlayCategoryPreferenceControllerTest.java index 12f70a4a621..7ec94f30df2 100644 --- a/tests/robotests/src/com/android/settings/development/OverlayCategoryPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/development/OverlayCategoryPreferenceControllerTest.java @@ -26,6 +26,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.app.Application; import android.content.om.IOverlayManager; import android.content.om.OverlayInfo; import android.content.pm.PackageManager; @@ -33,27 +34,33 @@ import android.os.RemoteException; import androidx.preference.ListPreference; import androidx.preference.PreferenceScreen; +import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; 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.LooperMode; -import org.robolectric.shadows.ShadowApplication; +import org.robolectric.android.util.concurrent.PausedExecutorService; +import org.robolectric.shadows.ShadowLooper; +import org.robolectric.shadows.ShadowPausedAsyncTask; import org.robolectric.shadows.ShadowToast; import java.util.ArrayList; import java.util.Arrays; @RunWith(RobolectricTestRunner.class) -@LooperMode(LooperMode.Mode.LEGACY) public class OverlayCategoryPreferenceControllerTest { + @Rule + public final MockitoRule mMockitoRule = MockitoJUnit.rule(); + + private static final OverlayInfo ONE_DISABLED = createFakeOverlay("overlay.one", false, 1); private static final OverlayInfo ONE_ENABLED = createFakeOverlay("overlay.one", true, 1); private static final OverlayInfo TWO_DISABLED = createFakeOverlay("overlay.two", false, 2); @@ -67,15 +74,19 @@ public class OverlayCategoryPreferenceControllerTest { @Mock private ListPreference mPreference; private OverlayCategoryPreferenceController mController; + private PausedExecutorService mExecutorService; + private Application mApplication; @Before public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); + mApplication = ApplicationProvider.getApplicationContext(); mockCurrentOverlays(); when(mPackageManager.getApplicationInfo(any(), anyInt())) .thenThrow(PackageManager.NameNotFoundException.class); mController = createController(); mController.setPreference(mPreference); + mExecutorService = new PausedExecutorService(); + ShadowPausedAsyncTask.overrideExecutor(mExecutorService); } Object mockCurrentOverlays(OverlayInfo... overlays) { @@ -111,7 +122,8 @@ public class OverlayCategoryPreferenceControllerTest { mockCurrentOverlays(ONE_DISABLED, TWO_DISABLED); mController.onPreferenceChange(null, TWO_DISABLED.packageName); - ShadowApplication.runBackgroundTasks(); + mExecutorService.runAll(); + ShadowLooper.idleMainLooper(); verify(mOverlayManager) .setEnabledExclusiveInCategory(eq(TWO_DISABLED.packageName), anyInt()); @@ -124,10 +136,11 @@ public class OverlayCategoryPreferenceControllerTest { .thenReturn(false); mController.onPreferenceChange(null, TWO_DISABLED.packageName); - ShadowApplication.runBackgroundTasks(); + mExecutorService.runAll(); + ShadowLooper.idleMainLooper(); assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo( - RuntimeEnvironment.application.getString(R.string.overlay_toast_failed_to_apply)); + mApplication.getString(R.string.overlay_toast_failed_to_apply)); } @Test @@ -136,7 +149,8 @@ public class OverlayCategoryPreferenceControllerTest { mController.onPreferenceChange( null, OverlayCategoryPreferenceController.PACKAGE_DEVICE_DEFAULT); - ShadowApplication.runBackgroundTasks(); + mExecutorService.runAll(); + ShadowLooper.idleMainLooper(); verify(mOverlayManager).setEnabled(eq(TWO_ENABLED.packageName), eq(false), anyInt()); } @@ -149,10 +163,11 @@ public class OverlayCategoryPreferenceControllerTest { mController.onPreferenceChange( null, OverlayCategoryPreferenceController.PACKAGE_DEVICE_DEFAULT); - ShadowApplication.runBackgroundTasks(); + mExecutorService.runAll(); + ShadowLooper.idleMainLooper(); assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo( - RuntimeEnvironment.application.getString(R.string.overlay_toast_failed_to_apply)); + mApplication.getString(R.string.overlay_toast_failed_to_apply)); } @Test @@ -163,10 +178,11 @@ public class OverlayCategoryPreferenceControllerTest { mController.onPreferenceChange( null, OverlayCategoryPreferenceController.PACKAGE_DEVICE_DEFAULT); - ShadowApplication.runBackgroundTasks(); + mExecutorService.runAll(); + ShadowLooper.idleMainLooper(); assertThat(ShadowToast.getTextOfLatestToast()).isEqualTo( - RuntimeEnvironment.application.getString(R.string.overlay_toast_failed_to_apply)); + mApplication.getString(R.string.overlay_toast_failed_to_apply)); } @Test @@ -208,13 +224,15 @@ public class OverlayCategoryPreferenceControllerTest { mController.displayPreference(screen); mController.onDeveloperOptionsSwitchDisabled(); + mExecutorService.runAll(); + ShadowLooper.idleMainLooper(); verify(mPreference).setEnabled(false); verify(mOverlayManager).setEnabled(eq(ONE_ENABLED.packageName), eq(false), anyInt()); } private OverlayCategoryPreferenceController createController() { - return new OverlayCategoryPreferenceController(RuntimeEnvironment.application, + return new OverlayCategoryPreferenceController(mApplication, mPackageManager, mOverlayManager, TEST_CATEGORY); }