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

Commit 33a10da3 authored by Vadim Caen's avatar Vadim Caen
Browse files

Finish MediaProj..Perm..Activity if Keyguard is dismissed

Finish the MediaProjectionPermissionActivity if Keygaruad is dismissed

Bug: 351409536
Flag: com.android.systemui.media_projection_dialog_behind_lockscreen
Test: Manually: start Meet, lock screen, unlock, share screen, dismiss
keygard. Check that no overlay is displayed.

Change-Id: Iad54a91f08cc34db56ea4bbacd894e563ccc3c1e
parent 634d93a1
Loading
Loading
Loading
Loading
+30 −12
Original line number Diff line number Diff line
@@ -68,12 +68,12 @@ import com.android.systemui.res.R;
import com.android.systemui.statusbar.phone.AlertDialogWithDelegate;
import com.android.systemui.statusbar.phone.SystemUIDialog;

import dagger.Lazy;

import java.util.function.Consumer;

import javax.inject.Inject;

import dagger.Lazy;

public class MediaProjectionPermissionActivity extends Activity {
    private static final String TAG = "MediaProjectionPermissionActivity";
    private static final float MAX_APP_NAME_SIZE_PX = 500f;
@@ -132,8 +132,7 @@ public class MediaProjectionPermissionActivity extends Activity {
                mPackageName = launchingIntent.getStringExtra(
                        EXTRA_PACKAGE_REUSING_GRANTED_CONSENT);
            } else {
                setResult(RESULT_CANCELED);
                finish(RECORD_CANCEL, /* projection= */ null);
                finishAsCancelled();
                return;
            }
        }
@@ -145,8 +144,7 @@ public class MediaProjectionPermissionActivity extends Activity {
            mUid = aInfo.uid;
        } catch (PackageManager.NameNotFoundException e) {
            Log.e(TAG, "Unable to look up package name", e);
            setResult(RESULT_CANCELED);
            finish(RECORD_CANCEL, /* projection= */ null);
            finishAsCancelled();
            return;
        }

@@ -176,15 +174,13 @@ public class MediaProjectionPermissionActivity extends Activity {
            }
        } catch (RemoteException e) {
            Log.e(TAG, "Error checking projection permissions", e);
            setResult(RESULT_CANCELED);
            finish(RECORD_CANCEL, /* projection= */ null);
            finishAsCancelled();
            return;
        }

        if (mFeatureFlags.isEnabled(Flags.WM_ENABLE_PARTIAL_SCREEN_SHARING_ENTERPRISE_POLICIES)) {
            if (showScreenCaptureDisabledDialogIfNeeded()) {
                setResult(RESULT_CANCELED);
                finish(RECORD_CANCEL, /* projection= */ null);
                finishAsCancelled();
                return;
            }
        }
@@ -346,6 +342,21 @@ public class MediaProjectionPermissionActivity extends Activity {
    private void requestDeviceUnlock() {
        mKeyguardManager.requestDismissKeyguard(this,
                new KeyguardManager.KeyguardDismissCallback() {

                    @Override
                    public void onDismissError() {
                        if (com.android.systemui.Flags.mediaProjectionDialogBehindLockscreen()) {
                            finishAsCancelled();
                        }
                    }

                    @Override
                    public void onDismissCancelled() {
                        if (com.android.systemui.Flags.mediaProjectionDialogBehindLockscreen()) {
                            finishAsCancelled();
                        }
                    }

                    @Override
                    public void onDismissSucceeded() {
                        mDialog.show();
@@ -386,8 +397,7 @@ public class MediaProjectionPermissionActivity extends Activity {
            }
        } catch (RemoteException e) {
            Log.e(TAG, "Error granting projection permission", e);
            setResult(RESULT_CANCELED);
            finish(RECORD_CANCEL, /* projection= */ null);
            finishAsCancelled();
        } finally {
            if (mDialog != null) {
                mDialog.dismiss();
@@ -436,6 +446,14 @@ public class MediaProjectionPermissionActivity extends Activity {
        }
    }

    /**
     * Finishes this activity and cancel the projection request.
     */
    private void finishAsCancelled() {
        setResult(RESULT_CANCELED);
        finish(RECORD_CANCEL, /* projection= */ null);
    }

    @Nullable
    private MediaProjectionConfig getMediaProjectionConfig() {
        Intent intent = getIntent();