Merge "Unlock keyguard for screen recording action" into rvc-qpr-dev am: 5e97fb3189
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12501565 Change-Id: Ie52975b430ebc8dbe73778c5d10d25e36b5c3312
This commit is contained in:
@@ -41,6 +41,7 @@ import com.android.internal.logging.UiEventLogger;
|
|||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
import com.android.systemui.dagger.qualifiers.LongRunning;
|
import com.android.systemui.dagger.qualifiers.LongRunning;
|
||||||
import com.android.systemui.settings.CurrentUserContextTracker;
|
import com.android.systemui.settings.CurrentUserContextTracker;
|
||||||
|
import com.android.systemui.statusbar.phone.KeyguardDismissUtil;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
@@ -70,7 +71,7 @@ public class RecordingService extends Service implements MediaRecorder.OnInfoLis
|
|||||||
private static final String ACTION_SHARE = "com.android.systemui.screenrecord.SHARE";
|
private static final String ACTION_SHARE = "com.android.systemui.screenrecord.SHARE";
|
||||||
|
|
||||||
private final RecordingController mController;
|
private final RecordingController mController;
|
||||||
|
private final KeyguardDismissUtil mKeyguardDismissUtil;
|
||||||
private ScreenRecordingAudioSource mAudioSource;
|
private ScreenRecordingAudioSource mAudioSource;
|
||||||
private boolean mShowTaps;
|
private boolean mShowTaps;
|
||||||
private boolean mOriginalShowTaps;
|
private boolean mOriginalShowTaps;
|
||||||
@@ -83,12 +84,13 @@ public class RecordingService extends Service implements MediaRecorder.OnInfoLis
|
|||||||
@Inject
|
@Inject
|
||||||
public RecordingService(RecordingController controller, @LongRunning Executor executor,
|
public RecordingService(RecordingController controller, @LongRunning Executor executor,
|
||||||
UiEventLogger uiEventLogger, NotificationManager notificationManager,
|
UiEventLogger uiEventLogger, NotificationManager notificationManager,
|
||||||
CurrentUserContextTracker userContextTracker) {
|
CurrentUserContextTracker userContextTracker, KeyguardDismissUtil keyguardDismissUtil) {
|
||||||
mController = controller;
|
mController = controller;
|
||||||
mLongExecutor = executor;
|
mLongExecutor = executor;
|
||||||
mUiEventLogger = uiEventLogger;
|
mUiEventLogger = uiEventLogger;
|
||||||
mNotificationManager = notificationManager;
|
mNotificationManager = notificationManager;
|
||||||
mUserContextTracker = userContextTracker;
|
mUserContextTracker = userContextTracker;
|
||||||
|
mKeyguardDismissUtil = keyguardDismissUtil;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -168,16 +170,17 @@ public class RecordingService extends Service implements MediaRecorder.OnInfoLis
|
|||||||
Intent shareIntent = new Intent(Intent.ACTION_SEND)
|
Intent shareIntent = new Intent(Intent.ACTION_SEND)
|
||||||
.setType("video/mp4")
|
.setType("video/mp4")
|
||||||
.putExtra(Intent.EXTRA_STREAM, shareUri);
|
.putExtra(Intent.EXTRA_STREAM, shareUri);
|
||||||
String shareLabel = getResources().getString(R.string.screenrecord_share_label);
|
mKeyguardDismissUtil.executeWhenUnlocked(() -> {
|
||||||
|
String shareLabel = getResources().getString(R.string.screenrecord_share_label);
|
||||||
|
startActivity(Intent.createChooser(shareIntent, shareLabel)
|
||||||
|
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
|
||||||
|
// Remove notification
|
||||||
|
mNotificationManager.cancelAsUser(null, NOTIFICATION_VIEW_ID, currentUser);
|
||||||
|
return false;
|
||||||
|
}, false);
|
||||||
|
|
||||||
// Close quick shade
|
// Close quick shade
|
||||||
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
|
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
|
||||||
|
|
||||||
// Remove notification
|
|
||||||
mNotificationManager.cancelAsUser(null, NOTIFICATION_VIEW_ID, currentUser);
|
|
||||||
|
|
||||||
startActivity(Intent.createChooser(shareIntent, shareLabel)
|
|
||||||
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return Service.START_STICKY;
|
return Service.START_STICKY;
|
||||||
|
|||||||
@@ -32,7 +32,9 @@ import androidx.test.filters.SmallTest;
|
|||||||
|
|
||||||
import com.android.internal.logging.UiEventLogger;
|
import com.android.internal.logging.UiEventLogger;
|
||||||
import com.android.systemui.SysuiTestCase;
|
import com.android.systemui.SysuiTestCase;
|
||||||
|
import com.android.systemui.plugins.ActivityStarter;
|
||||||
import com.android.systemui.settings.CurrentUserContextTracker;
|
import com.android.systemui.settings.CurrentUserContextTracker;
|
||||||
|
import com.android.systemui.statusbar.phone.KeyguardDismissUtil;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -61,6 +63,12 @@ public class RecordingServiceTest extends SysuiTestCase {
|
|||||||
private Executor mExecutor;
|
private Executor mExecutor;
|
||||||
@Mock
|
@Mock
|
||||||
private CurrentUserContextTracker mUserContextTracker;
|
private CurrentUserContextTracker mUserContextTracker;
|
||||||
|
private KeyguardDismissUtil mKeyguardDismissUtil = new KeyguardDismissUtil() {
|
||||||
|
public void executeWhenUnlocked(ActivityStarter.OnDismissAction action,
|
||||||
|
boolean requiresShadeOpen) {
|
||||||
|
action.onDismiss();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private RecordingService mRecordingService;
|
private RecordingService mRecordingService;
|
||||||
|
|
||||||
@@ -68,7 +76,7 @@ public class RecordingServiceTest extends SysuiTestCase {
|
|||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
mRecordingService = Mockito.spy(new RecordingService(mController, mExecutor, mUiEventLogger,
|
mRecordingService = Mockito.spy(new RecordingService(mController, mExecutor, mUiEventLogger,
|
||||||
mNotificationManager, mUserContextTracker));
|
mNotificationManager, mUserContextTracker, mKeyguardDismissUtil));
|
||||||
|
|
||||||
// Return actual context info
|
// Return actual context info
|
||||||
doReturn(mContext).when(mRecordingService).getApplicationContext();
|
doReturn(mContext).when(mRecordingService).getApplicationContext();
|
||||||
|
|||||||
Reference in New Issue
Block a user