diff options
4 files changed, 27 insertions, 20 deletions
diff --git a/services/core/java/com/android/server/dreams/DreamManagerService.java b/services/core/java/com/android/server/dreams/DreamManagerService.java index d2aff254890d..c6d66db3f8cd 100644 --- a/services/core/java/com/android/server/dreams/DreamManagerService.java +++ b/services/core/java/com/android/server/dreams/DreamManagerService.java @@ -67,6 +67,7 @@ import android.view.Display; import com.android.internal.R; import com.android.internal.annotations.GuardedBy; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLoggerImpl; import com.android.internal.util.DumpUtils; @@ -112,7 +113,7 @@ public final class DreamManagerService extends SystemService { private final Object mLock = new Object(); private final Context mContext; - private final DreamHandler mHandler; + private final Handler mHandler; private final DreamController mController; private final PowerManager mPowerManager; private final PowerManagerInternal mPowerManagerInternal; @@ -211,9 +212,14 @@ public final class DreamManagerService extends SystemService { } public DreamManagerService(Context context) { + this(context, new DreamHandler(FgThread.get().getLooper())); + } + + @VisibleForTesting + DreamManagerService(Context context, Handler handler) { super(context); mContext = context; - mHandler = new DreamHandler(FgThread.get().getLooper()); + mHandler = handler; mController = new DreamController(context, mHandler, mControllerListener); mPowerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE); @@ -244,7 +250,6 @@ public final class DreamManagerService extends SystemService { com.android.internal.R.bool.config_keepDreamingWhenUnplugging); mDreamsDisabledByAmbientModeSuppressionConfig = mContext.getResources().getBoolean( com.android.internal.R.bool.config_dreamsDisabledByAmbientModeSuppressionConfig); - } @Override diff --git a/services/tests/dreamservicetests/Android.bp b/services/tests/dreamservicetests/Android.bp index 8ef443e29cf6..8f15941740fc 100644 --- a/services/tests/dreamservicetests/Android.bp +++ b/services/tests/dreamservicetests/Android.bp @@ -17,6 +17,11 @@ android_test { "mockito-target-minus-junit4", "services.core", "mockingservicestests-utils-mockito", + "servicestests-utils", + ], + + defaults: [ + "modules-utils-testable-device-config-defaults", ], platform_apis: true, diff --git a/services/tests/dreamservicetests/AndroidManifest.xml b/services/tests/dreamservicetests/AndroidManifest.xml index f4b88d9c18e9..6092ef6f9427 100644 --- a/services/tests/dreamservicetests/AndroidManifest.xml +++ b/services/tests/dreamservicetests/AndroidManifest.xml @@ -21,6 +21,7 @@ Insert permissions here. eg: <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> --> + <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" /> <application android:debuggable="true" android:testOnly="true"> diff --git a/services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceMockingTest.java b/services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceMockingTest.java index 32d4e756d589..992b8534accc 100644 --- a/services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceMockingTest.java +++ b/services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceMockingTest.java @@ -36,13 +36,14 @@ import android.os.UserManager; import android.provider.Settings; import androidx.test.InstrumentationRegistry; -import androidx.test.filters.FlakyTest; -import com.android.server.LocalServices; +import com.android.internal.util.test.LocalServiceKeeperRule; import com.android.server.SystemService; +import com.android.server.testutils.TestHandler; import org.junit.After; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; @@ -65,23 +66,24 @@ public class DreamManagerServiceMockingTest { @Mock private UserManager mUserManagerMock; - private MockitoSession mMockitoSession; + @Rule + public LocalServiceKeeperRule mLocalServiceKeeperRule = new LocalServiceKeeperRule(); - private static <T> void addLocalServiceMock(Class<T> clazz, T mock) { - LocalServices.removeServiceForTest(clazz); - LocalServices.addService(clazz, mock); - } + private TestHandler mTestHandler; + private MockitoSession mMockitoSession; @Before public void setUp() throws Exception { + mTestHandler = new TestHandler(/* callback= */ null); MockitoAnnotations.initMocks(this); - mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getContext())); mResourcesSpy = spy(mContextSpy.getResources()); when(mContextSpy.getResources()).thenReturn(mResourcesSpy); - addLocalServiceMock(ActivityManagerInternal.class, mActivityManagerInternalMock); - addLocalServiceMock(PowerManagerInternal.class, mPowerManagerInternalMock); + mLocalServiceKeeperRule.overrideLocalService( + ActivityManagerInternal.class, mActivityManagerInternalMock); + mLocalServiceKeeperRule.overrideLocalService( + PowerManagerInternal.class, mPowerManagerInternalMock); when(mContextSpy.getSystemService(UserManager.class)).thenReturn(mUserManagerMock); mMockitoSession = mockitoSession() @@ -94,26 +96,20 @@ public class DreamManagerServiceMockingTest { @After public void tearDown() throws Exception { mMockitoSession.finishMocking(); - LocalServices.removeServiceForTest(ActivityManagerInternal.class); - LocalServices.removeServiceForTest(PowerManagerInternal.class); } private DreamManagerService createService() { - return new DreamManagerService(mContextSpy); + return new DreamManagerService(mContextSpy, mTestHandler); } @Test - @FlakyTest(bugId = 293443309) public void testSettingsQueryUserChange() { final DreamManagerService service = createService(); - final SystemService.TargetUser from = new SystemService.TargetUser(mock(UserInfo.class)); final SystemService.TargetUser to = new SystemService.TargetUser(mock(UserInfo.class)); - service.onUserSwitching(from, to); - verify(() -> Settings.Secure.getIntForUser(any(), eq(Settings.Secure.SCREENSAVER_ENABLED), anyInt(), |