summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/src/com/android/intentresolver/ChooserActivity.java3
-rw-r--r--java/tests/AndroidManifest.xml4
-rw-r--r--java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java2
-rw-r--r--java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java5
-rw-r--r--java/tests/src/com/android/intentresolver/TestContentProvider.kt55
-rw-r--r--java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java66
6 files changed, 89 insertions, 46 deletions
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index 7f55f78f..ecfaf0e2 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -713,8 +713,7 @@ public class ChooserActivity extends ResolverActivity implements
return resolver.query(uri, null, null, null, null);
}
- @VisibleForTesting
- protected boolean isImageType(@Nullable String mimeType) {
+ private boolean isImageType(@Nullable String mimeType) {
return mimeType != null && mimeType.startsWith("image/");
}
diff --git a/java/tests/AndroidManifest.xml b/java/tests/AndroidManifest.xml
index 306eccb9..05830c4c 100644
--- a/java/tests/AndroidManifest.xml
+++ b/java/tests/AndroidManifest.xml
@@ -29,6 +29,10 @@
<uses-library android:name="android.test.runner" />
<activity android:name="com.android.intentresolver.ChooserWrapperActivity" />
<activity android:name="com.android.intentresolver.ResolverWrapperActivity" />
+ <provider
+ android:authorities="com.android.intentresolver.tests"
+ android:name="com.android.intentresolver.TestContentProvider"
+ android:grantUriPermissions="true" />
</application>
<instrumentation android:name="android.testing.TestableInstrumentation"
diff --git a/java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java b/java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java
index 9ebeb79d..ce96ef63 100644
--- a/java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java
+++ b/java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java
@@ -61,7 +61,6 @@ public class ChooserActivityOverrideData {
public ChooserActivity.ChooserListController resolverListController;
public ChooserActivity.ChooserListController workResolverListController;
public Boolean isVoiceInteraction;
- public boolean isImageType;
public Cursor resolverCursor;
public boolean resolverForceException;
public ImageLoader imageLoader;
@@ -84,7 +83,6 @@ public class ChooserActivityOverrideData {
isVoiceInteraction = null;
createPackageManager = null;
imageLoader = null;
- isImageType = false;
resolverCursor = null;
resolverForceException = false;
resolverListController = mock(ChooserActivity.ChooserListController.class);
diff --git a/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java b/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java
index d23e4a66..82ba8d4d 100644
--- a/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java
+++ b/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java
@@ -201,11 +201,6 @@ public class ChooserWrapperActivity
}
@Override
- protected boolean isImageType(String mimeType) {
- return sOverrides.isImageType;
- }
-
- @Override
public ChooserActivityLogger getChooserActivityLogger() {
return sOverrides.chooserActivityLogger;
}
diff --git a/java/tests/src/com/android/intentresolver/TestContentProvider.kt b/java/tests/src/com/android/intentresolver/TestContentProvider.kt
new file mode 100644
index 00000000..b3b53baa
--- /dev/null
+++ b/java/tests/src/com/android/intentresolver/TestContentProvider.kt
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.intentresolver
+
+import android.content.ContentProvider
+import android.content.ContentValues
+import android.database.Cursor
+import android.net.Uri
+
+class TestContentProvider : ContentProvider() {
+ override fun query(
+ uri: Uri,
+ projection: Array<out String>?,
+ selection: String?,
+ selectionArgs: Array<out String>?,
+ sortOrder: String?
+ ): Cursor? = null
+
+ override fun getType(uri: Uri): String?
+ = runCatching {
+ uri.getQueryParameter("mimeType")
+ }.getOrNull()
+
+ override fun getStreamTypes(uri: Uri, mimeTypeFilter: String): Array<String>?
+ = runCatching {
+ uri.getQueryParameter("streamType")?.let { arrayOf(it) }
+ }.getOrNull()
+
+ override fun insert(uri: Uri, values: ContentValues?): Uri? = null
+
+ override fun delete(uri: Uri, selection: String?, selectionArgs: Array<out String>?): Int = 0
+
+ override fun update(
+ uri: Uri,
+ values: ContentValues?,
+ selection: String?,
+ selectionArgs: Array<out String>?
+ ): Int = 0
+
+ override fun onCreate(): Boolean = true
+} \ No newline at end of file
diff --git a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
index 7c4838a2..5ea0b47d 100644
--- a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
+++ b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
@@ -97,6 +97,7 @@ import android.view.WindowManager;
import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.test.espresso.contrib.RecyclerViewActions;
@@ -695,9 +696,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testFilePlusTextSharing_ExcludeText() {
- Uri uri = Uri.parse(
- "android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240);
+ Uri uri = createTestContentProviderUri(null, "image/png");
Intent sendIntent = createSendImageIntent(uri);
ChooserActivityOverrideData.getInstance().imageLoader =
createImageLoader(uri, createBitmap());
@@ -738,9 +737,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testFilePlusTextSharing_RemoveAndAddBackText() {
- Uri uri = Uri.parse(
- "android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240);
+ Uri uri = createTestContentProviderUri("application/pdf", "image/png");
Intent sendIntent = createSendImageIntent(uri);
ChooserActivityOverrideData.getInstance().imageLoader =
createImageLoader(uri, createBitmap());
@@ -787,9 +784,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testFilePlusTextSharing_TextExclusionDoesNotAffectAlternativeIntent() {
- Uri uri = Uri.parse(
- "android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240);
+ Uri uri = createTestContentProviderUri("image/png", null);
Intent sendIntent = createSendImageIntent(uri);
ChooserActivityOverrideData.getInstance().imageLoader =
createImageLoader(uri, createBitmap());
@@ -832,13 +827,10 @@ public class UnbundledChooserActivityTest {
@Test
public void testImagePlusTextSharing_failedThumbnailAndExcludedText_textChanges() {
- Uri uri = Uri.parse(
- "android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240);
+ Uri uri = createTestContentProviderUri("image/png", null);
Intent sendIntent = createSendImageIntent(uri);
ChooserActivityOverrideData.getInstance().imageLoader =
new TestPreviewImageLoader(Collections.emptyMap());
- ChooserActivityOverrideData.getInstance().isImageType = true;
sendIntent.putExtra(Intent.EXTRA_TEXT, "https://google.com/search?q=google");
List<ResolvedComponentInfo> resolvedComponentInfos = Arrays.asList(
@@ -863,7 +855,7 @@ public class UnbundledChooserActivityTest {
onView(withId(R.id.image_view))
.check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)));
onView(withId(R.id.content_preview_text))
- .check(matches(allOf(isDisplayed(), not(isEnabled()), withText("File only"))));
+ .check(matches(allOf(isDisplayed(), not(isEnabled()), withText("Image only"))));
}
@Test
@@ -930,14 +922,11 @@ public class UnbundledChooserActivityTest {
@Test @Ignore
- public void testEditImageLogs() throws Exception {
- Uri uri = Uri.parse(
- "android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240);
+ public void testEditImageLogs() {
+ Uri uri = createTestContentProviderUri("image/png", null);
Intent sendIntent = createSendImageIntent(uri);
ChooserActivityOverrideData.getInstance().imageLoader =
createImageLoader(uri, createBitmap());
- ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -956,8 +945,7 @@ public class UnbundledChooserActivityTest {
@Test
public void oneVisibleImagePreview() {
- Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240);
+ Uri uri = createTestContentProviderUri("image/png", null);
ArrayList<Uri> uris = new ArrayList<>();
uris.add(uri);
@@ -965,7 +953,6 @@ public class UnbundledChooserActivityTest {
Intent sendIntent = createSendUriIntentWithPreview(uris);
ChooserActivityOverrideData.getInstance().imageLoader =
createImageLoader(uri, createWideBitmap());
- ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -993,8 +980,7 @@ public class UnbundledChooserActivityTest {
@Test
public void allThumbnailsFailedToLoad_hidePreview() {
- Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240);
+ Uri uri = createTestContentProviderUri("image/jpg", null);
ArrayList<Uri> uris = new ArrayList<>();
uris.add(uri);
@@ -1003,7 +989,6 @@ public class UnbundledChooserActivityTest {
Intent sendIntent = createSendUriIntentWithPreview(uris);
ChooserActivityOverrideData.getInstance().imageLoader =
new TestPreviewImageLoader(Collections.emptyMap());
- ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -1016,8 +1001,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testManyVisibleImagePreview_ScrollableImagePreview() {
- Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240);
+ Uri uri = createTestContentProviderUri("image/png", null);
ArrayList<Uri> uris = new ArrayList<>();
uris.add(uri);
@@ -1034,7 +1018,6 @@ public class UnbundledChooserActivityTest {
Intent sendIntent = createSendUriIntentWithPreview(uris);
ChooserActivityOverrideData.getInstance().imageLoader =
createImageLoader(uri, createBitmap());
- ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -1054,8 +1037,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testImageAndTextPreview() {
- final Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240);
+ final Uri uri = createTestContentProviderUri("image/png", null);
final String sharedText = "text-" + System.currentTimeMillis();
ArrayList<Uri> uris = new ArrayList<>();
@@ -1065,7 +1047,6 @@ public class UnbundledChooserActivityTest {
sendIntent.putExtra(Intent.EXTRA_TEXT, sharedText);
ChooserActivityOverrideData.getInstance().imageLoader =
createImageLoader(uri, createBitmap());
- ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -1078,8 +1059,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testTextPreviewWhenTextIsSharedWithMultipleImages() {
- final Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240);
+ final Uri uri = createTestContentProviderUri("image/png", null);
final String sharedText = "text-" + System.currentTimeMillis();
ArrayList<Uri> uris = new ArrayList<>();
@@ -1090,7 +1070,6 @@ public class UnbundledChooserActivityTest {
sendIntent.putExtra(Intent.EXTRA_TEXT, sharedText);
ChooserActivityOverrideData.getInstance().imageLoader =
createImageLoader(uri, createBitmap());
- ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -1170,8 +1149,7 @@ public class UnbundledChooserActivityTest {
@Test
public void testImagePreviewLogging() {
- Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240);
+ Uri uri = createTestContentProviderUri("image/png", null);
ArrayList<Uri> uris = new ArrayList<>();
uris.add(uri);
@@ -1179,7 +1157,6 @@ public class UnbundledChooserActivityTest {
Intent sendIntent = createSendUriIntentWithPreview(uris);
ChooserActivityOverrideData.getInstance().imageLoader =
createImageLoader(uri, createBitmap());
- ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -2660,6 +2637,21 @@ public class UnbundledChooserActivityTest {
return sendIntent;
}
+ private Uri createTestContentProviderUri(
+ @Nullable String mimeType, @Nullable String streamType) {
+ String packageName =
+ InstrumentationRegistry.getInstrumentation().getContext().getPackageName();
+ Uri.Builder builder = Uri.parse("content://" + packageName + "/image.png")
+ .buildUpon();
+ if (mimeType != null) {
+ builder.appendQueryParameter("mimeType", mimeType);
+ }
+ if (streamType != null) {
+ builder.appendQueryParameter("streamType", streamType);
+ }
+ return builder.build();
+ }
+
private Intent createSendTextIntentWithPreview(String title, Uri imageThumbnail) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);