Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 32955076 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Request dismissing keyguard when showing MediaProjection Dialog" into main

parents b75be8b8 c9d931c9
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1415,3 +1415,13 @@ flag {
   description: "Allow non-touchscreen devices to bypass falsing"
   bug: "319809270"
}

flag {
   name: "media_projection_dialog_behind_lockscreen"
   namespace: "systemui"
   description: "Ensure MediaProjection Dialog appears behind the lockscreen"
   bug: "351409536"
   metadata {
       purpose: PURPOSE_BUGFIX
   }
}
 No newline at end of file
+22 −1
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.annotation.RequiresPermission;
import android.app.Activity;
import android.app.ActivityOptions.LaunchCookie;
import android.app.AlertDialog;
import android.app.KeyguardManager;
import android.app.StatusBarManager;
import android.app.compat.CompatChanges;
import android.content.Context;
@@ -83,6 +84,7 @@ public class MediaProjectionPermissionActivity extends Activity {
    private final StatusBarManager mStatusBarManager;
    private final MediaProjectionMetricsLogger mMediaProjectionMetricsLogger;
    private final ScreenCaptureDisabledDialogDelegate mScreenCaptureDisabledDialogDelegate;
    private final KeyguardManager mKeyguardManager;

    private String mPackageName;
    private int mUid;
@@ -101,11 +103,13 @@ public class MediaProjectionPermissionActivity extends Activity {
            FeatureFlags featureFlags,
            Lazy<ScreenCaptureDevicePolicyResolver> screenCaptureDevicePolicyResolver,
            StatusBarManager statusBarManager,
            KeyguardManager keyguardManager,
            MediaProjectionMetricsLogger mediaProjectionMetricsLogger,
            ScreenCaptureDisabledDialogDelegate screenCaptureDisabledDialogDelegate) {
        mFeatureFlags = featureFlags;
        mScreenCaptureDevicePolicyResolver = screenCaptureDevicePolicyResolver;
        mStatusBarManager = statusBarManager;
        mKeyguardManager = keyguardManager;
        mMediaProjectionMetricsLogger = mediaProjectionMetricsLogger;
        mScreenCaptureDisabledDialogDelegate = screenCaptureDisabledDialogDelegate;
    }
@@ -208,7 +212,14 @@ public class MediaProjectionPermissionActivity extends Activity {
        }

        setUpDialog(mDialog);

        boolean shouldDismissKeyguard =
                com.android.systemui.Flags.mediaProjectionDialogBehindLockscreen();
        if (shouldDismissKeyguard && mKeyguardManager.isDeviceLocked()) {
            requestDeviceUnlock();
        } else {
            mDialog.show();
        }

        if (savedInstanceState == null) {
            mMediaProjectionMetricsLogger.notifyPermissionRequestDisplayed(mUid);
@@ -332,6 +343,16 @@ public class MediaProjectionPermissionActivity extends Activity {
        return false;
    }

    private void requestDeviceUnlock() {
        mKeyguardManager.requestDismissKeyguard(this,
                new KeyguardManager.KeyguardDismissCallback() {
                    @Override
                    public void onDismissSucceeded() {
                        mDialog.show();
                    }
                });
    }

    private void grantMediaProjectionPermission(
            int screenShareMode, boolean hasCastingCapabilities) {
        try {