diff options
8 files changed, 27 insertions, 150 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt index d0beb7abc25b..8990505bc5db 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt @@ -292,15 +292,6 @@ object Flags { val WM_ENABLE_SHELL_TRANSITIONS = sysPropBooleanFlag("persist.wm.debug.shell_transit", default = true) - // TODO(b/254513207): Tracking Bug - @Keep - @JvmField - val WM_ENABLE_PARTIAL_SCREEN_SHARING = - releasedFlag( - name = "enable_record_task_content", - namespace = DeviceConfig.NAMESPACE_WINDOW_MANAGER, - ) - // TODO(b/256873975): Tracking Bug @JvmField @Keep diff --git a/packages/SystemUI/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionActivity.java b/packages/SystemUI/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionActivity.java index 6c5337418d02..cc4a92cb516c 100644 --- a/packages/SystemUI/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionActivity.java +++ b/packages/SystemUI/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionActivity.java @@ -187,70 +187,40 @@ public class MediaProjectionPermissionActivity extends Activity } } - CharSequence dialogText = null; - CharSequence dialogTitle = null; - final String appName = extractAppName(aInfo, packageManager); final boolean hasCastingCapabilities = Utils.isHeadlessRemoteDisplayProvider(packageManager, mPackageName); - if (hasCastingCapabilities) { - dialogText = getString(R.string.media_projection_sys_service_dialog_warning); - dialogTitle = getString(R.string.media_projection_sys_service_dialog_title); - } else { - String actionText = getString(R.string.media_projection_dialog_warning, appName); - SpannableString message = new SpannableString(actionText); - - int appNameIndex = actionText.indexOf(appName); - if (appNameIndex >= 0) { - message.setSpan(new StyleSpan(Typeface.BOLD), - appNameIndex, appNameIndex + appName.length(), 0); - } - dialogText = message; - dialogTitle = getString(R.string.media_projection_dialog_title, appName); - } - // Using application context for the dialog, instead of the activity context, so we get // the correct screen width when in split screen. Context dialogContext = getApplicationContext(); - if (isPartialScreenSharingEnabled()) { - final boolean overrideDisableSingleAppOption = - CompatChanges.isChangeEnabled( - OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION, - mPackageName, getHostUserHandle()); - MediaProjectionPermissionDialogDelegate delegate = - new MediaProjectionPermissionDialogDelegate( - dialogContext, - getMediaProjectionConfig(), - dialog -> { - ScreenShareOption selectedOption = - dialog.getSelectedScreenShareOption(); - grantMediaProjectionPermission(selectedOption.getMode()); - }, - () -> finish(RECORD_CANCEL, /* projection= */ null), - hasCastingCapabilities, - appName, - overrideDisableSingleAppOption, - mUid, - mMediaProjectionMetricsLogger); - mDialog = - new AlertDialogWithDelegate( - dialogContext, R.style.Theme_SystemUI_Dialog, delegate); - } else { - AlertDialog.Builder dialogBuilder = - new AlertDialog.Builder(dialogContext, R.style.Theme_SystemUI_Dialog) - .setTitle(dialogTitle) - .setIcon(R.drawable.ic_media_projection_permission) - .setMessage(dialogText) - .setPositiveButton(R.string.media_projection_action_text, this) - .setNeutralButton(android.R.string.cancel, this); - mDialog = dialogBuilder.create(); - } + final boolean overrideDisableSingleAppOption = + CompatChanges.isChangeEnabled( + OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION, + mPackageName, getHostUserHandle()); + MediaProjectionPermissionDialogDelegate delegate = + new MediaProjectionPermissionDialogDelegate( + dialogContext, + getMediaProjectionConfig(), + dialog -> { + ScreenShareOption selectedOption = + dialog.getSelectedScreenShareOption(); + grantMediaProjectionPermission(selectedOption.getMode()); + }, + () -> finish(RECORD_CANCEL, /* projection= */ null), + hasCastingCapabilities, + appName, + overrideDisableSingleAppOption, + mUid, + mMediaProjectionMetricsLogger); + mDialog = + new AlertDialogWithDelegate( + dialogContext, R.style.Theme_SystemUI_Dialog, delegate); if (savedInstanceState == null) { mMediaProjectionMetricsLogger.notifyProjectionInitiated( mUid, - appName == null + hasCastingCapabilities ? SessionCreationSource.CAST : SessionCreationSource.APP); } @@ -366,7 +336,7 @@ public class MediaProjectionPermissionActivity extends Activity setResult(RESULT_OK, intent); finish(RECORD_CONTENT_DISPLAY, projection); } - if (isPartialScreenSharingEnabled() && screenShareMode == SINGLE_APP) { + if (screenShareMode == SINGLE_APP) { IMediaProjection projection = MediaProjectionServiceHelper.createOrReuseProjection( mUid, mPackageName, mReviewGrantedConsentRequired); final Intent intent = new Intent(this, @@ -437,8 +407,4 @@ public class MediaProjectionPermissionActivity extends Activity return intent.getParcelableExtra( MediaProjectionManager.EXTRA_MEDIA_PROJECTION_CONFIG); } - - private boolean isPartialScreenSharingEnabled() { - return mFeatureFlags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING); - } } diff --git a/packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt index 8a51ad4cbd71..040aedb342b7 100644 --- a/packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt +++ b/packages/SystemUI/src/com/android/systemui/recordissue/RecordIssueDialogDelegate.kt @@ -35,7 +35,6 @@ import androidx.annotation.WorkerThread import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.flags.FeatureFlagsClassic -import com.android.systemui.flags.Flags import com.android.systemui.flags.Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING_ENTERPRISE_POLICIES import com.android.systemui.mediaprojection.MediaProjectionMetricsLogger import com.android.systemui.mediaprojection.SessionCreationSource @@ -154,10 +153,7 @@ constructor( SessionCreationSource.SYSTEM_UI_SCREEN_RECORDER ) - if ( - flags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING) && - !state.hasUserApprovedScreenRecording - ) { + if (!state.hasUserApprovedScreenRecording) { mainExecutor.execute { ScreenCapturePermissionDialogDelegate(factory, state).createDialog().apply { setOnCancelListener { screenRecordSwitch.isChecked = false } diff --git a/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingController.java b/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingController.java index 46c586163ce8..a8a78a91097c 100644 --- a/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingController.java +++ b/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingController.java @@ -171,11 +171,8 @@ public class RecordingController mMediaProjectionMetricsLogger.notifyProjectionInitiated( getHostUid(), SessionCreationSource.SYSTEM_UI_SCREEN_RECORDER); - return (flags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING) - ? mScreenRecordPermissionDialogDelegateFactory - .create(this, getHostUserHandle(), getHostUid(), onStartRecordingClicked) - : mScreenRecordDialogFactory - .create(this, onStartRecordingClicked)) + return mScreenRecordPermissionDialogDelegateFactory + .create(this, getHostUserHandle(), getHostUid(), onStartRecordingClicked) .createDialog(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionDialogDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionDialogDelegateTest.kt index 7dd802878674..f884b874cca8 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionDialogDelegateTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/mediaprojection/permission/MediaProjectionPermissionDialogDelegateTest.kt @@ -25,8 +25,6 @@ import android.widget.TextView import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase -import com.android.systemui.flags.FeatureFlagsClassic -import com.android.systemui.flags.Flags import com.android.systemui.mediaprojection.MediaProjectionMetricsLogger import com.android.systemui.res.R import com.android.systemui.statusbar.phone.AlertDialogWithDelegate @@ -34,10 +32,8 @@ import com.android.systemui.statusbar.phone.SystemUIDialog import com.android.systemui.util.mockito.mock import junit.framework.Assert.assertEquals import org.junit.After -import org.junit.Before import org.junit.Test import org.junit.runner.RunWith -import org.mockito.Mockito.`when` as whenever @SmallTest @RunWith(AndroidJUnit4::class) @@ -46,7 +42,6 @@ class MediaProjectionPermissionDialogDelegateTest : SysuiTestCase() { private lateinit var dialog: AlertDialog - private val flags = mock<FeatureFlagsClassic>() private val appName = "Test App" private val resIdSingleApp = R.string.screen_share_permission_dialog_option_single_app @@ -54,11 +49,6 @@ class MediaProjectionPermissionDialogDelegateTest : SysuiTestCase() { private val resIdSingleAppDisabled = R.string.media_projection_entry_app_permission_dialog_single_app_disabled - @Before - fun setUp() { - whenever(flags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING)).thenReturn(true) - } - @After fun teardown() { if (::dialog.isInitialized) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt index ce1a885098d9..8d84c3e7392e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/recordissue/RecordIssueDialogDelegateTest.kt @@ -177,7 +177,6 @@ class RecordIssueDialogDelegateTest : SysuiTestCase() { .thenReturn(false) whenever(devicePolicyResolver.isScreenCaptureCompletelyDisabled(any<UserHandle>())) .thenReturn(false) - whenever(flags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING)).thenReturn(true) whenever(state.hasUserApprovedScreenRecording).thenReturn(false) val screenRecordSwitch = dialog.requireViewById<Switch>(R.id.screenrecord_switch) @@ -200,7 +199,6 @@ class RecordIssueDialogDelegateTest : SysuiTestCase() { .thenReturn(false) whenever(devicePolicyResolver.isScreenCaptureCompletelyDisabled(any<UserHandle>())) .thenReturn(false) - whenever(flags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING)).thenReturn(false) val screenRecordSwitch = dialog.requireViewById<Switch>(R.id.screenrecord_switch) screenRecordSwitch.isChecked = true diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenrecord/RecordingControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenrecord/RecordingControllerTest.java index 477c50b58519..6b16e78436d4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/screenrecord/RecordingControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenrecord/RecordingControllerTest.java @@ -39,10 +39,8 @@ import android.content.Intent; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; -import androidx.annotation.Nullable; import androidx.test.filters.SmallTest; -import com.android.systemui.Dependency; import com.android.systemui.SysuiTestCase; import com.android.systemui.animation.DialogTransitionAnimator; import com.android.systemui.broadcast.BroadcastDispatcher; @@ -52,12 +50,9 @@ import com.android.systemui.mediaprojection.MediaProjectionMetricsLogger; import com.android.systemui.mediaprojection.SessionCreationSource; import com.android.systemui.mediaprojection.devicepolicy.ScreenCaptureDevicePolicyResolver; import com.android.systemui.mediaprojection.devicepolicy.ScreenCaptureDisabledDialogDelegate; -import com.android.systemui.model.SysUiState; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.settings.UserTracker; -import com.android.systemui.statusbar.phone.DialogDelegate; import com.android.systemui.statusbar.phone.SystemUIDialog; -import com.android.systemui.statusbar.phone.SystemUIDialogManager; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.time.FakeSystemClock; @@ -110,7 +105,6 @@ public class RecordingControllerTest extends SysuiTestCase { private FakeFeatureFlags mFeatureFlags; private RecordingController mController; - private TestSystemUIDialogFactory mDialogFactory; private static final int USER_ID = 10; @@ -120,14 +114,6 @@ public class RecordingControllerTest extends SysuiTestCase { Context spiedContext = spy(mContext); when(spiedContext.getUserId()).thenReturn(TEST_USER_ID); - mDialogFactory = new TestSystemUIDialogFactory( - mContext, - Dependency.get(SystemUIDialogManager.class), - Dependency.get(SysUiState.class), - Dependency.get(BroadcastDispatcher.class), - Dependency.get(DialogTransitionAnimator.class) - ); - mFeatureFlags = new FakeFeatureFlags(); when(mScreenCaptureDisabledDialogDelegate.createSysUIDialog()) .thenReturn(mScreenCaptureDisabledDialog); @@ -251,7 +237,6 @@ public class RecordingControllerTest extends SysuiTestCase { @Test public void testPoliciesFlagDisabled_screenCapturingNotAllowed_returnsNullDevicePolicyDialog() { - mFeatureFlags.set(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING, true); mFeatureFlags.set(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING_ENTERPRISE_POLICIES, false); when(mDevicePolicyResolver.isScreenCaptureCompletelyDisabled((any()))).thenReturn(true); @@ -269,19 +254,7 @@ public class RecordingControllerTest extends SysuiTestCase { } @Test - public void testPartialScreenSharingDisabled_returnsLegacyDialog() { - mFeatureFlags.set(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING, false); - mFeatureFlags.set(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING_ENTERPRISE_POLICIES, false); - - Dialog dialog = mController.createScreenRecordDialog(mContext, mFeatureFlags, - mDialogTransitionAnimator, mActivityStarter, /* onStartRecordingClicked= */ null); - - assertThat(dialog).isEqualTo(mScreenRecordSystemUIDialog); - } - - @Test public void testPoliciesFlagEnabled_screenCapturingNotAllowed_returnsDevicePolicyDialog() { - mFeatureFlags.set(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING, true); mFeatureFlags.set(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING_ENTERPRISE_POLICIES, true); when(mDevicePolicyResolver.isScreenCaptureCompletelyDisabled((any()))).thenReturn(true); @@ -293,7 +266,6 @@ public class RecordingControllerTest extends SysuiTestCase { @Test public void testPoliciesFlagEnabled_screenCapturingAllowed_returnsNullDevicePolicyDialog() { - mFeatureFlags.set(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING, true); mFeatureFlags.set(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING_ENTERPRISE_POLICIES, true); when(mDevicePolicyResolver.isScreenCaptureCompletelyDisabled((any()))).thenReturn(false); @@ -312,7 +284,6 @@ public class RecordingControllerTest extends SysuiTestCase { @Test public void testPoliciesFlagEnabled_screenCapturingAllowed_logsProjectionInitiated() { - mFeatureFlags.set(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING, true); mFeatureFlags.set(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING_ENTERPRISE_POLICIES, true); when(mDevicePolicyResolver.isScreenCaptureCompletelyDisabled((any()))).thenReturn(false); @@ -324,32 +295,4 @@ public class RecordingControllerTest extends SysuiTestCase { /* hostUid= */ myUid(), SessionCreationSource.SYSTEM_UI_SCREEN_RECORDER); } - - private static class TestSystemUIDialogFactory extends SystemUIDialog.Factory { - - @Nullable private DialogDelegate<SystemUIDialog> mLastDelegate; - @Nullable private SystemUIDialog mLastCreatedDialog; - - TestSystemUIDialogFactory( - Context context, - SystemUIDialogManager systemUIDialogManager, - SysUiState sysUiState, - BroadcastDispatcher broadcastDispatcher, - DialogTransitionAnimator dialogTransitionAnimator) { - super( - context, - systemUIDialogManager, - sysUiState, - broadcastDispatcher, - dialogTransitionAnimator); - } - - @Override - public SystemUIDialog create(SystemUIDialog.Delegate delegate) { - SystemUIDialog dialog = super.create(delegate); - mLastDelegate = delegate; - mLastCreatedDialog = dialog; - return dialog; - } - } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegateTest.kt index cc8d7d532bda..11b0bdf3effd 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegateTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/screenrecord/ScreenRecordPermissionDialogDelegateTest.kt @@ -28,7 +28,6 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.animation.DialogTransitionAnimator import com.android.systemui.broadcast.BroadcastDispatcher import com.android.systemui.flags.FeatureFlags -import com.android.systemui.flags.Flags import com.android.systemui.mediaprojection.MediaProjectionMetricsLogger import com.android.systemui.mediaprojection.appselector.MediaProjectionAppSelectorActivity import com.android.systemui.mediaprojection.permission.ENTIRE_SCREEN @@ -51,7 +50,6 @@ import org.mockito.Mock import org.mockito.Mockito.eq import org.mockito.Mockito.never import org.mockito.Mockito.verify -import org.mockito.Mockito.`when` as whenever import org.mockito.MockitoAnnotations @SmallTest @@ -72,8 +70,6 @@ class ScreenRecordPermissionDialogDelegateTest : SysuiTestCase() { fun setUp() { MockitoAnnotations.initMocks(this) - whenever(flags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING)).thenReturn(true) - val systemUIDialogFactory = SystemUIDialog.Factory( context, |