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

Commit 8bc9fd51 authored by Jay Aliomer's avatar Jay Aliomer Committed by Android (Google) Code Review
Browse files

Merge "Unlock keyguard for screen recording action"

parents 344c3db4 2d0d2d18
Loading
Loading
Loading
Loading
+29 −24
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import com.android.internal.logging.UiEventLogger;
import com.android.systemui.R;
import com.android.systemui.dagger.qualifiers.LongRunning;
import com.android.systemui.settings.CurrentUserContextTracker;
import com.android.systemui.statusbar.phone.KeyguardDismissUtil;

import java.io.IOException;
import java.util.concurrent.Executor;
@@ -72,7 +73,7 @@ public class RecordingService extends Service implements MediaRecorder.OnInfoLis
    private static final String ACTION_DELETE = "com.android.systemui.screenrecord.DELETE";

    private final RecordingController mController;

    private final KeyguardDismissUtil mKeyguardDismissUtil;
    private ScreenRecordingAudioSource mAudioSource;
    private boolean mShowTaps;
    private boolean mOriginalShowTaps;
@@ -85,12 +86,13 @@ public class RecordingService extends Service implements MediaRecorder.OnInfoLis
    @Inject
    public RecordingService(RecordingController controller, @LongRunning Executor executor,
            UiEventLogger uiEventLogger, NotificationManager notificationManager,
            CurrentUserContextTracker userContextTracker) {
            CurrentUserContextTracker userContextTracker, KeyguardDismissUtil keyguardDismissUtil) {
        mController = controller;
        mLongExecutor = executor;
        mUiEventLogger = uiEventLogger;
        mNotificationManager = notificationManager;
        mUserContextTracker = userContextTracker;
        mKeyguardDismissUtil = keyguardDismissUtil;
    }

    /**
@@ -170,21 +172,22 @@ public class RecordingService extends Service implements MediaRecorder.OnInfoLis
                Intent shareIntent = new Intent(Intent.ACTION_SEND)
                        .setType("video/mp4")
                        .putExtra(Intent.EXTRA_STREAM, shareUri);
                mKeyguardDismissUtil.executeWhenUnlocked(() -> {
                    String shareLabel = getResources().getString(R.string.screenrecord_share_label);

                // Close quick shade
                sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));

                    startActivity(Intent.createChooser(shareIntent, shareLabel)
                            .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
                    // Remove notification
                    mNotificationManager.cancelAsUser(null, NOTIFICATION_VIEW_ID, currentUser);
                    return false;
                }, false);

                startActivity(Intent.createChooser(shareIntent, shareLabel)
                        .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
                // Close quick shade
                sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
                break;
            case ACTION_DELETE:
                mKeyguardDismissUtil.executeWhenUnlocked(() -> {
                    // Close quick shade
                    sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));

                    ContentResolver resolver = getContentResolver();
                    Uri uri = Uri.parse(intent.getStringExtra(EXTRA_PATH));
                    resolver.delete(uri, null, null);
@@ -193,10 +196,12 @@ public class RecordingService extends Service implements MediaRecorder.OnInfoLis
                            this,
                            R.string.screenrecord_delete_description,
                            Toast.LENGTH_LONG).show();
                    Log.d(TAG, "Deleted recording " + uri);

                    // Remove notification
                    mNotificationManager.cancelAsUser(null, NOTIFICATION_VIEW_ID, currentUser);
                Log.d(TAG, "Deleted recording " + uri);
                    return false;
                }, false);
                break;
        }
        return Service.START_STICKY;
+9 −1
Original line number Diff line number Diff line
@@ -32,7 +32,9 @@ import androidx.test.filters.SmallTest;

import com.android.internal.logging.UiEventLogger;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.settings.CurrentUserContextTracker;
import com.android.systemui.statusbar.phone.KeyguardDismissUtil;

import org.junit.Before;
import org.junit.Test;
@@ -61,6 +63,12 @@ public class RecordingServiceTest extends SysuiTestCase {
    private Executor mExecutor;
    @Mock
    private CurrentUserContextTracker mUserContextTracker;
    private KeyguardDismissUtil mKeyguardDismissUtil = new KeyguardDismissUtil() {
        public void executeWhenUnlocked(ActivityStarter.OnDismissAction action,
                boolean requiresShadeOpen) {
            action.onDismiss();
        }
    };

    private RecordingService mRecordingService;

@@ -68,7 +76,7 @@ public class RecordingServiceTest extends SysuiTestCase {
    public void setUp() throws Exception {
        MockitoAnnotations.initMocks(this);
        mRecordingService = Mockito.spy(new RecordingService(mController, mExecutor, mUiEventLogger,
                mNotificationManager, mUserContextTracker));
                mNotificationManager, mUserContextTracker, mKeyguardDismissUtil));

        // Return actual context info
        doReturn(mContext).when(mRecordingService).getApplicationContext();