diff options
Diffstat (limited to 'java')
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); |