summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/dreams/DreamManagerService.java11
-rw-r--r--services/tests/dreamservicetests/Android.bp5
-rw-r--r--services/tests/dreamservicetests/AndroidManifest.xml1
-rw-r--r--services/tests/dreamservicetests/src/com/android/server/dreams/DreamManagerServiceMockingTest.java30
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(),