(4/N)[MediaProjection] Don't send result to server until setup ends
SysUI sends a result to MediaProjectionManagerService if the setup flow was launched by the service, to handle projection token reuse. If another activity is launched as part of the MediaProjection setup flow, do not send the result to the server when the permission dialog is dismissed; let the next activity handle sending the result. Bug: 253218374 Test: manual Change-Id: I92b27262a86f13c370f69fa14f427f4107c4df70
This commit is contained in:
@@ -79,6 +79,9 @@ public class MediaProjectionPermissionActivity extends Activity
|
||||
// Indicates if user must review already-granted consent that the MediaProjection app is
|
||||
// attempting to re-use.
|
||||
private boolean mReviewGrantedConsentRequired = false;
|
||||
// Indicates if the user has consented to record, but is continuing in another activity to
|
||||
// select a particular task to capture.
|
||||
private boolean mUserSelectingTask = false;
|
||||
|
||||
@Inject
|
||||
public MediaProjectionPermissionActivity(FeatureFlags featureFlags,
|
||||
@@ -296,6 +299,7 @@ public class MediaProjectionPermissionActivity extends Activity
|
||||
// Start activity from the current foreground user to avoid creating a separate
|
||||
// SystemUI process without access to recent tasks because it won't have
|
||||
// WM Shell running inside.
|
||||
mUserSelectingTask = true;
|
||||
startActivityAsUser(intent, UserHandle.of(ActivityManager.getCurrentUser()));
|
||||
}
|
||||
} catch (RemoteException e) {
|
||||
@@ -316,7 +320,10 @@ public class MediaProjectionPermissionActivity extends Activity
|
||||
@Override
|
||||
public void finish() {
|
||||
// Default to cancelling recording when user needs to review consent.
|
||||
finish(RECORD_CANCEL, /* projection= */ null);
|
||||
// Don't send cancel if the user has moved on to the next activity.
|
||||
if (!mUserSelectingTask) {
|
||||
finish(RECORD_CANCEL, /* projection= */ null);
|
||||
}
|
||||
}
|
||||
|
||||
private void finish(@ReviewGrantedConsentResult int consentResult,
|
||||
@@ -328,7 +335,7 @@ public class MediaProjectionPermissionActivity extends Activity
|
||||
|
||||
private void onDialogDismissedOrCancelled(DialogInterface dialogInterface) {
|
||||
if (!isFinishing()) {
|
||||
finish(RECORD_CANCEL, /* projection= */ null);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user