Loading packages/SystemUI/multivalentTests/src/com/android/systemui/clipboardoverlay/ActionIntentCreatorTest.kt +10 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,10 @@ import androidx.test.filters.SmallTest import androidx.test.runner.AndroidJUnit4 import com.android.systemui.SysuiTestCase import com.android.systemui.res.R import kotlinx.coroutines.test.TestCoroutineScheduler import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.Test Loading @@ -33,7 +37,11 @@ import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) class ActionIntentCreatorTest : SysuiTestCase() { val creator = ActionIntentCreator() private val scheduler = TestCoroutineScheduler() private val mainDispatcher = UnconfinedTestDispatcher(scheduler) private val testScope = TestScope(mainDispatcher) val creator = ActionIntentCreator(testScope.backgroundScope) @Test fun test_getTextEditorIntent() { Loading Loading @@ -65,7 +73,7 @@ class ActionIntentCreatorTest : SysuiTestCase() { } @Test fun test_getImageEditIntent() { fun test_getImageEditIntent() = runTest { context.getOrCreateTestableResources().addOverride(R.string.config_screenshotEditor, "") val fakeUri = Uri.parse("content://foo") var intent = creator.getImageEditIntent(fakeUri, context) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/clipboardoverlay/DefaultIntentCreatorTest.java +12 −4 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ import com.android.systemui.res.R; import org.junit.Test; import org.junit.runner.RunWith; import java.util.concurrent.atomic.AtomicReference; @SmallTest @RunWith(AndroidJUnit4.class) public class DefaultIntentCreatorTest extends SysuiTestCase { Loading Loading @@ -73,12 +75,16 @@ public class DefaultIntentCreatorTest extends SysuiTestCase { } @Test public void test_getImageEditIntent() { public void test_getImageEditIntentAsync() { getContext().getOrCreateTestableResources().addOverride(R.string.config_screenshotEditor, ""); Uri fakeUri = Uri.parse("content://foo"); Intent intent = mIntentCreator.getImageEditIntent(fakeUri, getContext()); final AtomicReference<Intent> intentHolder = new AtomicReference<>(null); mIntentCreator.getImageEditIntentAsync(fakeUri, getContext(), output -> { intentHolder.set(output); }); Intent intent = intentHolder.get(); assertEquals(Intent.ACTION_EDIT, intent.getAction()); assertEquals("image/*", intent.getType()); assertEquals(null, intent.getComponent()); Loading @@ -90,8 +96,10 @@ public class DefaultIntentCreatorTest extends SysuiTestCase { "com.android.remotecopy.RemoteCopyActivity"); getContext().getOrCreateTestableResources().addOverride(R.string.config_screenshotEditor, fakeComponent.flattenToString()); intent = mIntentCreator.getImageEditIntent(fakeUri, getContext()); assertEquals(fakeComponent, intent.getComponent()); mIntentCreator.getImageEditIntentAsync(fakeUri, getContext(), output -> { intentHolder.set(output); }); assertEquals(fakeComponent, intentHolder.get().getComponent()); } @Test Loading packages/SystemUI/src/com/android/systemui/clipboardoverlay/ActionIntentCreator.kt +16 −2 Original line number Diff line number Diff line Loading @@ -24,11 +24,17 @@ import android.content.Intent import android.net.Uri import android.text.TextUtils import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.res.R import java.util.function.Consumer import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @SysUISingleton class ActionIntentCreator @Inject constructor() : IntentCreator { class ActionIntentCreator @Inject constructor(@Application private val applicationScope: CoroutineScope) : IntentCreator { override fun getTextEditorIntent(context: Context?) = Intent(context, EditTextActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) Loading Loading @@ -65,7 +71,7 @@ class ActionIntentCreator @Inject constructor() : IntentCreator { .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) } override fun getImageEditIntent(uri: Uri?, context: Context): Intent { suspend fun getImageEditIntent(uri: Uri?, context: Context): Intent { val editorPackage = context.getString(R.string.config_screenshotEditor) return Intent(Intent.ACTION_EDIT).apply { if (!TextUtils.isEmpty(editorPackage)) { Loading @@ -78,6 +84,14 @@ class ActionIntentCreator @Inject constructor() : IntentCreator { } } override fun getImageEditIntentAsync( uri: Uri?, context: Context, outputConsumer: Consumer<Intent>, ) { applicationScope.launch { outputConsumer.accept(getImageEditIntent(uri, context)) } } override fun getRemoteCopyIntent(clipData: ClipData?, context: Context): Intent { val remoteCopyPackage = context.getString(R.string.config_remoteCopyPackage) return Intent(REMOTE_COPY_ACTION).apply { Loading packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java +8 −4 Original line number Diff line number Diff line Loading @@ -558,8 +558,10 @@ public class ClipboardOverlayController implements ClipboardListener.ClipboardOv private void editImage(Uri uri) { mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_EDIT_TAPPED); mContext.startActivity(mIntentCreator.getImageEditIntent(uri, mContext)); mIntentCreator.getImageEditIntentAsync(uri, mContext, intent -> { mContext.startActivity(intent); animateOut(); }); } private void editText() { Loading Loading @@ -747,8 +749,10 @@ public class ClipboardOverlayController implements ClipboardListener.ClipboardOv mIntentCreator.getTextEditorIntent(mContext)); break; case IMAGE: finishWithSharedTransition(CLIPBOARD_OVERLAY_EDIT_TAPPED, mIntentCreator.getImageEditIntent(mClipboardModel.getUri(), mContext)); mIntentCreator.getImageEditIntentAsync(mClipboardModel.getUri(), mContext, intent -> { finishWithSharedTransition(CLIPBOARD_OVERLAY_EDIT_TAPPED, intent); }); break; default: Log.w(TAG, "Got preview tapped callback for non-editable type " Loading packages/SystemUI/src/com/android/systemui/clipboardoverlay/DefaultIntentCreator.java +4 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ import android.text.TextUtils; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.res.R; import java.util.function.Consumer; import javax.inject.Inject; @SysUISingleton Loading Loading @@ -73,7 +75,7 @@ public class DefaultIntentCreator implements IntentCreator { return chooserIntent; } public Intent getImageEditIntent(Uri uri, Context context) { public void getImageEditIntentAsync(Uri uri, Context context, Consumer<Intent> outputConsumer) { String editorPackage = context.getString(R.string.config_screenshotEditor); Intent editIntent = new Intent(Intent.ACTION_EDIT); if (!TextUtils.isEmpty(editorPackage)) { Loading @@ -83,7 +85,7 @@ public class DefaultIntentCreator implements IntentCreator { editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); editIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); editIntent.putExtra(EXTRA_EDIT_SOURCE, EDIT_SOURCE_CLIPBOARD); return editIntent; outputConsumer.accept(editIntent); } public Intent getRemoteCopyIntent(ClipData clipData, Context context) { Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/clipboardoverlay/ActionIntentCreatorTest.kt +10 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,10 @@ import androidx.test.filters.SmallTest import androidx.test.runner.AndroidJUnit4 import com.android.systemui.SysuiTestCase import com.android.systemui.res.R import kotlinx.coroutines.test.TestCoroutineScheduler import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.Test Loading @@ -33,7 +37,11 @@ import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) class ActionIntentCreatorTest : SysuiTestCase() { val creator = ActionIntentCreator() private val scheduler = TestCoroutineScheduler() private val mainDispatcher = UnconfinedTestDispatcher(scheduler) private val testScope = TestScope(mainDispatcher) val creator = ActionIntentCreator(testScope.backgroundScope) @Test fun test_getTextEditorIntent() { Loading Loading @@ -65,7 +73,7 @@ class ActionIntentCreatorTest : SysuiTestCase() { } @Test fun test_getImageEditIntent() { fun test_getImageEditIntent() = runTest { context.getOrCreateTestableResources().addOverride(R.string.config_screenshotEditor, "") val fakeUri = Uri.parse("content://foo") var intent = creator.getImageEditIntent(fakeUri, context) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/clipboardoverlay/DefaultIntentCreatorTest.java +12 −4 Original line number Diff line number Diff line Loading @@ -34,6 +34,8 @@ import com.android.systemui.res.R; import org.junit.Test; import org.junit.runner.RunWith; import java.util.concurrent.atomic.AtomicReference; @SmallTest @RunWith(AndroidJUnit4.class) public class DefaultIntentCreatorTest extends SysuiTestCase { Loading Loading @@ -73,12 +75,16 @@ public class DefaultIntentCreatorTest extends SysuiTestCase { } @Test public void test_getImageEditIntent() { public void test_getImageEditIntentAsync() { getContext().getOrCreateTestableResources().addOverride(R.string.config_screenshotEditor, ""); Uri fakeUri = Uri.parse("content://foo"); Intent intent = mIntentCreator.getImageEditIntent(fakeUri, getContext()); final AtomicReference<Intent> intentHolder = new AtomicReference<>(null); mIntentCreator.getImageEditIntentAsync(fakeUri, getContext(), output -> { intentHolder.set(output); }); Intent intent = intentHolder.get(); assertEquals(Intent.ACTION_EDIT, intent.getAction()); assertEquals("image/*", intent.getType()); assertEquals(null, intent.getComponent()); Loading @@ -90,8 +96,10 @@ public class DefaultIntentCreatorTest extends SysuiTestCase { "com.android.remotecopy.RemoteCopyActivity"); getContext().getOrCreateTestableResources().addOverride(R.string.config_screenshotEditor, fakeComponent.flattenToString()); intent = mIntentCreator.getImageEditIntent(fakeUri, getContext()); assertEquals(fakeComponent, intent.getComponent()); mIntentCreator.getImageEditIntentAsync(fakeUri, getContext(), output -> { intentHolder.set(output); }); assertEquals(fakeComponent, intentHolder.get().getComponent()); } @Test Loading
packages/SystemUI/src/com/android/systemui/clipboardoverlay/ActionIntentCreator.kt +16 −2 Original line number Diff line number Diff line Loading @@ -24,11 +24,17 @@ import android.content.Intent import android.net.Uri import android.text.TextUtils import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.res.R import java.util.function.Consumer import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @SysUISingleton class ActionIntentCreator @Inject constructor() : IntentCreator { class ActionIntentCreator @Inject constructor(@Application private val applicationScope: CoroutineScope) : IntentCreator { override fun getTextEditorIntent(context: Context?) = Intent(context, EditTextActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) Loading Loading @@ -65,7 +71,7 @@ class ActionIntentCreator @Inject constructor() : IntentCreator { .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) } override fun getImageEditIntent(uri: Uri?, context: Context): Intent { suspend fun getImageEditIntent(uri: Uri?, context: Context): Intent { val editorPackage = context.getString(R.string.config_screenshotEditor) return Intent(Intent.ACTION_EDIT).apply { if (!TextUtils.isEmpty(editorPackage)) { Loading @@ -78,6 +84,14 @@ class ActionIntentCreator @Inject constructor() : IntentCreator { } } override fun getImageEditIntentAsync( uri: Uri?, context: Context, outputConsumer: Consumer<Intent>, ) { applicationScope.launch { outputConsumer.accept(getImageEditIntent(uri, context)) } } override fun getRemoteCopyIntent(clipData: ClipData?, context: Context): Intent { val remoteCopyPackage = context.getString(R.string.config_remoteCopyPackage) return Intent(REMOTE_COPY_ACTION).apply { Loading
packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardOverlayController.java +8 −4 Original line number Diff line number Diff line Loading @@ -558,8 +558,10 @@ public class ClipboardOverlayController implements ClipboardListener.ClipboardOv private void editImage(Uri uri) { mClipboardLogger.logSessionComplete(CLIPBOARD_OVERLAY_EDIT_TAPPED); mContext.startActivity(mIntentCreator.getImageEditIntent(uri, mContext)); mIntentCreator.getImageEditIntentAsync(uri, mContext, intent -> { mContext.startActivity(intent); animateOut(); }); } private void editText() { Loading Loading @@ -747,8 +749,10 @@ public class ClipboardOverlayController implements ClipboardListener.ClipboardOv mIntentCreator.getTextEditorIntent(mContext)); break; case IMAGE: finishWithSharedTransition(CLIPBOARD_OVERLAY_EDIT_TAPPED, mIntentCreator.getImageEditIntent(mClipboardModel.getUri(), mContext)); mIntentCreator.getImageEditIntentAsync(mClipboardModel.getUri(), mContext, intent -> { finishWithSharedTransition(CLIPBOARD_OVERLAY_EDIT_TAPPED, intent); }); break; default: Log.w(TAG, "Got preview tapped callback for non-editable type " Loading
packages/SystemUI/src/com/android/systemui/clipboardoverlay/DefaultIntentCreator.java +4 −2 Original line number Diff line number Diff line Loading @@ -27,6 +27,8 @@ import android.text.TextUtils; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.res.R; import java.util.function.Consumer; import javax.inject.Inject; @SysUISingleton Loading Loading @@ -73,7 +75,7 @@ public class DefaultIntentCreator implements IntentCreator { return chooserIntent; } public Intent getImageEditIntent(Uri uri, Context context) { public void getImageEditIntentAsync(Uri uri, Context context, Consumer<Intent> outputConsumer) { String editorPackage = context.getString(R.string.config_screenshotEditor); Intent editIntent = new Intent(Intent.ACTION_EDIT); if (!TextUtils.isEmpty(editorPackage)) { Loading @@ -83,7 +85,7 @@ public class DefaultIntentCreator implements IntentCreator { editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); editIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); editIntent.putExtra(EXTRA_EDIT_SOURCE, EDIT_SOURCE_CLIPBOARD); return editIntent; outputConsumer.accept(editIntent); } public Intent getRemoteCopyIntent(ClipData clipData, Context context) { Loading