Loading packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java +29 −24 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; } /** Loading Loading @@ -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); Loading @@ -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; Loading packages/SystemUI/tests/src/com/android/systemui/screenrecord/RecordingServiceTest.java +9 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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(); Loading Loading
packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java +29 −24 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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; } /** Loading Loading @@ -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); Loading @@ -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; Loading
packages/SystemUI/tests/src/com/android/systemui/screenrecord/RecordingServiceTest.java +9 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading @@ -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(); Loading