Loading services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java +8 −1 Original line number Diff line number Diff line Loading @@ -702,7 +702,7 @@ public final class MediaProjectionManagerService extends SystemService } } private final class BinderService extends IMediaProjectionManager.Stub { final class BinderService extends IMediaProjectionManager.Stub { BinderService(Context context) { super(PermissionEnforcer.fromContext(context)); Loading Loading @@ -891,6 +891,13 @@ public final class MediaProjectionManagerService extends SystemService @Override public void requestConsentForInvalidProjection(@NonNull IMediaProjection projection) { requestConsentForInvalidProjection_enforcePermission(); if (android.companion.virtualdevice.flags.Flags.mediaProjectionKeyguardRestrictions() && mKeyguardManager.isKeyguardLocked()) { Slog.v(TAG, "Reusing token: Won't request consent while the keyguard is locked"); return; } synchronized (mLock) { if (!isCurrentProjection(projection)) { Slog.v(TAG, "Reusing token: Won't request consent again for a token that " Loading services/tests/servicestests/src/com/android/server/media/projection/MediaProjectionManagerServiceTest.java +34 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; Loading Loading @@ -361,6 +362,39 @@ public class MediaProjectionManagerServiceTest { assertThat(secondProjection).isNotEqualTo(projection); } @EnableFlags(android.companion.virtualdevice.flags .Flags.FLAG_MEDIA_PROJECTION_KEYGUARD_RESTRICTIONS) @Test public void testReuseProjection_keyguardNotLocked_startConsentDialog() throws NameNotFoundException { MediaProjectionManagerService.MediaProjection projection = startProjectionPreconditions(); projection.start(mIMediaProjectionCallback); doNothing().when(mContext).startActivityAsUser(any(), any()); doReturn(false).when(mKeyguardManager).isKeyguardLocked(); MediaProjectionManagerService.BinderService mediaProjectionBinderService = mService.new BinderService(mContext); mediaProjectionBinderService.requestConsentForInvalidProjection(projection); verify(mContext).startActivityAsUser(any(), any()); } @EnableFlags(android.companion.virtualdevice.flags .Flags.FLAG_MEDIA_PROJECTION_KEYGUARD_RESTRICTIONS) @Test public void testReuseProjection_keyguardLocked_noConsentDialog() throws NameNotFoundException { MediaProjectionManagerService.MediaProjection projection = startProjectionPreconditions(); projection.start(mIMediaProjectionCallback); doReturn(true).when(mKeyguardManager).isKeyguardLocked(); MediaProjectionManagerService.BinderService mediaProjectionBinderService = mService.new BinderService(mContext); mediaProjectionBinderService.requestConsentForInvalidProjection(projection); verify(mContext, never()).startActivityAsUser(any(), any()); } @EnableFlags(android.companion.virtualdevice.flags .Flags.FLAG_MEDIA_PROJECTION_KEYGUARD_RESTRICTIONS) @Test Loading Loading
services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java +8 −1 Original line number Diff line number Diff line Loading @@ -702,7 +702,7 @@ public final class MediaProjectionManagerService extends SystemService } } private final class BinderService extends IMediaProjectionManager.Stub { final class BinderService extends IMediaProjectionManager.Stub { BinderService(Context context) { super(PermissionEnforcer.fromContext(context)); Loading Loading @@ -891,6 +891,13 @@ public final class MediaProjectionManagerService extends SystemService @Override public void requestConsentForInvalidProjection(@NonNull IMediaProjection projection) { requestConsentForInvalidProjection_enforcePermission(); if (android.companion.virtualdevice.flags.Flags.mediaProjectionKeyguardRestrictions() && mKeyguardManager.isKeyguardLocked()) { Slog.v(TAG, "Reusing token: Won't request consent while the keyguard is locked"); return; } synchronized (mLock) { if (!isCurrentProjection(projection)) { Slog.v(TAG, "Reusing token: Won't request consent again for a token that " Loading
services/tests/servicestests/src/com/android/server/media/projection/MediaProjectionManagerServiceTest.java +34 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; Loading Loading @@ -361,6 +362,39 @@ public class MediaProjectionManagerServiceTest { assertThat(secondProjection).isNotEqualTo(projection); } @EnableFlags(android.companion.virtualdevice.flags .Flags.FLAG_MEDIA_PROJECTION_KEYGUARD_RESTRICTIONS) @Test public void testReuseProjection_keyguardNotLocked_startConsentDialog() throws NameNotFoundException { MediaProjectionManagerService.MediaProjection projection = startProjectionPreconditions(); projection.start(mIMediaProjectionCallback); doNothing().when(mContext).startActivityAsUser(any(), any()); doReturn(false).when(mKeyguardManager).isKeyguardLocked(); MediaProjectionManagerService.BinderService mediaProjectionBinderService = mService.new BinderService(mContext); mediaProjectionBinderService.requestConsentForInvalidProjection(projection); verify(mContext).startActivityAsUser(any(), any()); } @EnableFlags(android.companion.virtualdevice.flags .Flags.FLAG_MEDIA_PROJECTION_KEYGUARD_RESTRICTIONS) @Test public void testReuseProjection_keyguardLocked_noConsentDialog() throws NameNotFoundException { MediaProjectionManagerService.MediaProjection projection = startProjectionPreconditions(); projection.start(mIMediaProjectionCallback); doReturn(true).when(mKeyguardManager).isKeyguardLocked(); MediaProjectionManagerService.BinderService mediaProjectionBinderService = mService.new BinderService(mContext); mediaProjectionBinderService.requestConsentForInvalidProjection(projection); verify(mContext, never()).startActivityAsUser(any(), any()); } @EnableFlags(android.companion.virtualdevice.flags .Flags.FLAG_MEDIA_PROJECTION_KEYGUARD_RESTRICTIONS) @Test Loading