diff options
-rw-r--r-- | src/com/android/documentsui/picker/TrampolineActivity.kt | 9 | ||||
-rw-r--r-- | tests/functional/com/android/documentsui/TrampolineActivityTest.kt | 42 |
2 files changed, 40 insertions, 11 deletions
diff --git a/src/com/android/documentsui/picker/TrampolineActivity.kt b/src/com/android/documentsui/picker/TrampolineActivity.kt index e9e9739a3..dba09f2f3 100644 --- a/src/com/android/documentsui/picker/TrampolineActivity.kt +++ b/src/com/android/documentsui/picker/TrampolineActivity.kt @@ -24,7 +24,9 @@ import android.os.Build import android.os.Bundle import android.os.ext.SdkExtensions import android.provider.MediaStore.ACTION_PICK_IMAGES +import android.util.Log import androidx.appcompat.app.AppCompatActivity +import com.android.documentsui.base.SharedMinimal.DEBUG /** * DocumentsUI PickActivity currently defers picking of media mime types to the Photopicker. This @@ -32,6 +34,10 @@ import androidx.appcompat.app.AppCompatActivity * there are non-media mime types to handle. */ class TrampolineActivity : AppCompatActivity() { + companion object { + const val TAG = "TrampolineActivity" + } + override fun onCreate(savedInstanceBundle: Bundle?) { super.onCreate(savedInstanceBundle) @@ -98,6 +104,9 @@ class TrampolineActivity : AppCompatActivity() { // Ensure the `ACTION_GET_CONTENT` activity is enabled. if (!isComponentEnabled(photopickerGetContentComponent)) { + if (DEBUG) { + Log.d(TAG, "Photopicker PICK_IMAGES component has no enabled GET_CONTENT handler") + } return null } diff --git a/tests/functional/com/android/documentsui/TrampolineActivityTest.kt b/tests/functional/com/android/documentsui/TrampolineActivityTest.kt index 48e6b7614..76d703701 100644 --- a/tests/functional/com/android/documentsui/TrampolineActivityTest.kt +++ b/tests/functional/com/android/documentsui/TrampolineActivityTest.kt @@ -32,6 +32,7 @@ import androidx.test.uiautomator.UiDevice import androidx.test.uiautomator.Until import com.android.documentsui.flags.Flags.FLAG_REDIRECT_GET_CONTENT import com.android.documentsui.picker.TrampolineActivity +import java.util.Optional import java.util.regex.Pattern import org.junit.After import org.junit.Assert.assertNotNull @@ -88,11 +89,11 @@ class TrampolineActivityTest() { data class GetContentIntentData( val mimeType: String, val expectedApp: AppType, - val extraMimeTypes: Array<String>? = null, + val extraMimeTypes: Optional<Array<String>> = Optional.empty(), ) { override fun toString(): String { - if (extraMimeTypes != null) { - return "${mimeType}_${extraMimeTypes.joinToString("_")}" + if (extraMimeTypes.isPresent) { + return "${mimeType}_${extraMimeTypes.get().joinToString("_")}" } return mimeType } @@ -117,32 +118,32 @@ class TrampolineActivityTest() { ), GetContentIntentData( mimeType = "image/*", - extraMimeTypes = arrayOf("video/*"), + extraMimeTypes = Optional.of(arrayOf("video/*")), expectedApp = AppType.PHOTOPICKER, ), GetContentIntentData( mimeType = "video/*", - extraMimeTypes = arrayOf("image/*"), + extraMimeTypes = Optional.of(arrayOf("image/*")), expectedApp = AppType.PHOTOPICKER, ), GetContentIntentData( mimeType = "video/*", - extraMimeTypes = arrayOf("text/*"), + extraMimeTypes = Optional.of(arrayOf("text/*")), expectedApp = AppType.DOCUMENTSUI, ), GetContentIntentData( mimeType = "video/*", - extraMimeTypes = arrayOf("image/*", "text/*"), + extraMimeTypes = Optional.of(arrayOf("image/*", "text/*")), expectedApp = AppType.DOCUMENTSUI, ), GetContentIntentData( mimeType = "*/*", - extraMimeTypes = arrayOf("image/*", "video/*"), + extraMimeTypes = Optional.of(arrayOf("image/*", "video/*")), expectedApp = AppType.PHOTOPICKER, ), GetContentIntentData( mimeType = "image/*", - extraMimeTypes = arrayOf(), + extraMimeTypes = Optional.of(arrayOf()), expectedApp = AppType.DOCUMENTSUI, ) ) @@ -161,7 +162,10 @@ class TrampolineActivityTest() { intent.setClass(context, TrampolineActivity::class.java) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) intent.setType(testData.mimeType) - testData.extraMimeTypes?.let { intent.putExtra(Intent.EXTRA_MIME_TYPES, it) } + if (testData.extraMimeTypes.isPresent) { + testData.extraMimeTypes.get() + .forEach { intent.putExtra(Intent.EXTRA_MIME_TYPES, it) } + } context.startActivity(intent) } @@ -178,7 +182,23 @@ class TrampolineActivityTest() { else -> By.pkg(DOCUMENTSUI_PACKAGE_REGEX) } - assertNotNull(device.wait(Until.findObject(bySelector), UI_TIMEOUT)) + val builder = StringBuilder() + builder.append("Intent with mimetype ${testData.mimeType}") + if (testData.extraMimeTypes.isPresent) { + builder.append( + " and EXTRA_MIME_TYPES of ${ + testData.extraMimeTypes.get().joinToString(", ") + }" + ) + } + builder.append( + " didn't cause ${testData.expectedApp.name} to appear after ${UI_TIMEOUT}ms" + ) + + assertNotNull( + builder.toString(), + device.wait(Until.findObject(bySelector), UI_TIMEOUT) + ) } } |