diff options
author | 2024-12-27 15:44:19 +0000 | |
---|---|---|
committer | 2025-01-14 07:29:38 -0800 | |
commit | d71854e9302f6cf1501245f9c4d577ada771db91 (patch) | |
tree | a2e2d1c338745b153bde2a414316567889e3bc64 /tests | |
parent | b3e7d01c7ae281a6dc9d08c417cb3c12ba59cdd5 (diff) |
Allow text toggle for shares from sysui.
Criteria will need to be refined in a follow-up CL, but getting the
parts in place behind a flag here.
Preview UI change is minimal. Test has some duplicated boilerplate but
choosing not to refactor that because the UI itself is a better refactor
candidate but outside the scope of this CL.
Bug: 242791070
Test: atest ChooserRequestTest
Test: atest FilesPlusTExtContentPreviewUiTest
Test: manual end-to-end test with feature flag on.
Flag: com.android.systemui.shared.screenshot_context_url
Change-Id: I6eaca454a88e8b8c8a196d825c7ac3daee437109
Diffstat (limited to 'tests')
-rw-r--r-- | tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt | 77 | ||||
-rw-r--r-- | tests/unit/src/com/android/intentresolver/ui/viewmodel/ChooserRequestTest.kt | 53 |
2 files changed, 125 insertions, 5 deletions
diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt index 1d85c61b..a944beee 100644 --- a/tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt +++ b/tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt @@ -20,6 +20,7 @@ import android.net.Uri import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.CheckBox import android.widget.TextView import androidx.annotation.IdRes import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -192,6 +193,7 @@ class FilesPlusTextContentPreviewUiTest { DefaultMimeTypeClassifier, headlineGenerator, testMetadataText, + /* allowTextToggle=*/ false, ) val layoutInflater = LayoutInflater.from(context) val gridLayout = @@ -203,7 +205,7 @@ class FilesPlusTextContentPreviewUiTest { context.resources, LayoutInflater.from(context), gridLayout, - headlineRow + headlineRow, ) verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount) @@ -234,6 +236,7 @@ class FilesPlusTextContentPreviewUiTest { DefaultMimeTypeClassifier, headlineGenerator, testMetadataText, + /* allowTextToggle=*/ false, ) val layoutInflater = LayoutInflater.from(context) val gridLayout = @@ -253,7 +256,7 @@ class FilesPlusTextContentPreviewUiTest { context.resources, LayoutInflater.from(context), gridLayout, - headlineRow + headlineRow, ) verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount) @@ -270,6 +273,73 @@ class FilesPlusTextContentPreviewUiTest { verifyPreviewMetadata(headlineRow, testMetadataText) } + @Test + fun test_allowToggle() { + val testSubject = + FilesPlusTextContentPreviewUi( + testScope, + /*isSingleImage=*/ false, + /* fileCount=*/ 1, + SHARED_TEXT, + /*intentMimeType=*/ "*/*", + actionFactory, + imageLoader, + DefaultMimeTypeClassifier, + headlineGenerator, + testMetadataText, + /* allowTextToggle=*/ true, + ) + val layoutInflater = LayoutInflater.from(context) + val gridLayout = + layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false) + as ViewGroup + val headlineRow = gridLayout.requireViewById<View>(R.id.chooser_headline_row_container) + + testSubject.display( + context.resources, + LayoutInflater.from(context), + gridLayout, + headlineRow, + ) + + val checkbox = headlineRow.requireViewById<CheckBox>(R.id.include_text_action) + assertThat(checkbox.visibility).isEqualTo(View.VISIBLE) + assertThat(checkbox.isChecked).isTrue() + } + + @Test + fun test_hideTextToggle() { + val testSubject = + FilesPlusTextContentPreviewUi( + testScope, + /*isSingleImage=*/ false, + /* fileCount=*/ 1, + SHARED_TEXT, + /*intentMimeType=*/ "*/*", + actionFactory, + imageLoader, + DefaultMimeTypeClassifier, + headlineGenerator, + testMetadataText, + /* allowTextToggle=*/ false, + ) + val layoutInflater = LayoutInflater.from(context) + val gridLayout = + layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false) + as ViewGroup + val headlineRow = gridLayout.requireViewById<View>(R.id.chooser_headline_row_container) + + testSubject.display( + context.resources, + LayoutInflater.from(context), + gridLayout, + headlineRow, + ) + + val checkbox = headlineRow.requireViewById<CheckBox>(R.id.include_text_action) + assertThat(checkbox.visibility).isNotEqualTo(View.VISIBLE) + } + private fun testLoadingHeadline( intentMimeType: String, sharedFileCount: Int, @@ -287,6 +357,7 @@ class FilesPlusTextContentPreviewUiTest { DefaultMimeTypeClassifier, headlineGenerator, testMetadataText, + /* allowTextToggle=*/ false, ) val layoutInflater = LayoutInflater.from(context) val gridLayout = @@ -307,7 +378,7 @@ class FilesPlusTextContentPreviewUiTest { context.resources, LayoutInflater.from(context), gridLayout, - headlineRow + headlineRow, ) to headlineRow } diff --git a/tests/unit/src/com/android/intentresolver/ui/viewmodel/ChooserRequestTest.kt b/tests/unit/src/com/android/intentresolver/ui/viewmodel/ChooserRequestTest.kt index facfe151..7bc1e785 100644 --- a/tests/unit/src/com/android/intentresolver/ui/viewmodel/ChooserRequestTest.kt +++ b/tests/unit/src/com/android/intentresolver/ui/viewmodel/ChooserRequestTest.kt @@ -28,6 +28,9 @@ import android.content.Intent.EXTRA_REFERRER import android.content.Intent.EXTRA_TEXT import android.content.Intent.EXTRA_TITLE import android.net.Uri +import android.platform.test.annotations.DisableFlags +import android.platform.test.annotations.EnableFlags +import android.platform.test.flag.junit.SetFlagsRule import androidx.core.net.toUri import androidx.core.os.bundleOf import com.android.intentresolver.ContentTypeHint @@ -37,13 +40,16 @@ import com.android.intentresolver.validation.Importance import com.android.intentresolver.validation.Invalid import com.android.intentresolver.validation.NoValue import com.android.intentresolver.validation.Valid +import com.android.systemui.shared.Flags import com.google.common.truth.Truth.assertThat +import org.junit.Rule import org.junit.Test private fun createActivityModel( targetIntent: Intent?, referrer: Uri? = null, additionalIntents: List<Intent>? = null, + launchedFromPackage: String = "com.android.example", ) = ActivityModel( Intent(ACTION_CHOOSER).apply { @@ -51,12 +57,13 @@ private fun createActivityModel( additionalIntents?.also { putExtra(EXTRA_ALTERNATE_INTENTS, it.toTypedArray()) } }, launchedFromUid = 10000, - launchedFromPackage = "com.android.example", - referrer = referrer ?: "android-app://com.android.example".toUri(), + launchedFromPackage = launchedFromPackage, + referrer = referrer ?: "android-app://$launchedFromPackage".toUri(), false, ) class ChooserRequestTest { + @get:Rule val flagsRule = SetFlagsRule() @Test fun missingIntent() { @@ -265,4 +272,46 @@ class ChooserRequestTest { assertThat(request.sharedTextTitle).isEqualTo(title) } } + + @Test + @DisableFlags(Flags.FLAG_SCREENSHOT_CONTEXT_URL) + fun testCallerAllowsTextToggle_flagOff() { + val intent = Intent().putExtras(bundleOf(EXTRA_INTENT to Intent(ACTION_SEND))) + val model = + createActivityModel(targetIntent = intent, launchedFromPackage = "com.android.systemui") + val result = readChooserRequest(model) + + assertThat(result).isInstanceOf(Valid::class.java) + result as Valid<ChooserRequest> + + assertThat(result.value.callerAllowsTextToggle).isFalse() + } + + @Test + @EnableFlags(Flags.FLAG_SCREENSHOT_CONTEXT_URL) + fun testCallerAllowsTextToggle_sysuiPackage() { + val intent = Intent().putExtras(bundleOf(EXTRA_INTENT to Intent(ACTION_SEND))) + val model = + createActivityModel(targetIntent = intent, launchedFromPackage = "com.android.systemui") + val result = readChooserRequest(model) + + assertThat(result).isInstanceOf(Valid::class.java) + result as Valid<ChooserRequest> + + assertThat(result.value.callerAllowsTextToggle).isTrue() + } + + @Test + @EnableFlags(Flags.FLAG_SCREENSHOT_CONTEXT_URL) + fun testCallerAllowsTextToggle_otherPackage() { + val intent = Intent().putExtras(bundleOf(EXTRA_INTENT to Intent(ACTION_SEND))) + val model = + createActivityModel(targetIntent = intent, launchedFromPackage = "com.hello.world") + val result = readChooserRequest(model) + + assertThat(result).isInstanceOf(Valid::class.java) + result as Valid<ChooserRequest> + + assertThat(result.value.callerAllowsTextToggle).isFalse() + } } |