diff options
| author | 2023-04-07 13:22:08 +0000 | |
|---|---|---|
| committer | 2023-04-07 13:22:08 +0000 | |
| commit | 8a12f04a6116232ecd40a65ae6ba2f24234990ec (patch) | |
| tree | 57ef8611190905aa3093bc95ba708aa17dbf325a /java | |
| parent | 2f92c528098156802819e684ecb492e1e132d7b2 (diff) | |
| parent | 964676869a6edcacccae658ba6ab4290f90166c2 (diff) | |
Merge changes from topic "mrcasey-customactionflag" into udc-dev
* changes:
Remove SHARESHEET_SCROLLABLE_IMAGE_PREVIEW
Remove usage of SHARESHEET_IMAGE_AND_TEXT_PREVIEW
Remove flag SHARESHEET_RESELECTION_ACTION
Remove SHARESHEET_CUSTOM_ACTIONS flag usage
Diffstat (limited to 'java')
18 files changed, 41 insertions, 773 deletions
diff --git a/java/res/layout/chooser_action_row.xml b/java/res/layout/chooser_action_row.xml deleted file mode 100644 index 620ff704..00000000 --- a/java/res/layout/chooser_action_row.xml +++ /dev/null @@ -1,32 +0,0 @@ -<!-- - ~ Copyright (C) 2019 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 - --> -<FrameLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <com.android.intentresolver.widget.ChooserActionRow - android:id="@androidprv:id/chooser_action_row" - android:layout_width="@dimen/chooser_preview_width" - android:layout_height="wrap_content" - android:paddingLeft="@dimen/chooser_edge_margin_normal" - android:paddingRight="@dimen/chooser_edge_margin_normal" - android:layout_marginBottom="@dimen/chooser_view_spacing" - android:layout_gravity="center_horizontal" - android:gravity="center" /> - -</FrameLayout>
\ No newline at end of file diff --git a/java/res/layout/chooser_image_preview_view.xml b/java/res/layout/chooser_image_preview_view.xml deleted file mode 100644 index e81349c7..00000000 --- a/java/res/layout/chooser_image_preview_view.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!-- - ~ 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. - --> - -<com.android.intentresolver.widget.ChooserImagePreviewView - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:paddingStart="@dimen/chooser_edge_margin_normal" - android:paddingEnd="@dimen/chooser_edge_margin_normal" - android:paddingBottom="@dimen/chooser_view_spacing" - android:background="?android:attr/colorBackground" /> diff --git a/java/res/layout/chooser_image_preview_view_internals.xml b/java/res/layout/chooser_image_preview_view_internals.xml deleted file mode 100644 index 2b93edf8..00000000 --- a/java/res/layout/chooser_image_preview_view_internals.xml +++ /dev/null @@ -1,73 +0,0 @@ -<!-- - ~ Copyright (C) 2022 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. - --> - -<merge - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:paddingBottom="@dimen/chooser_view_spacing" - android:background="?android:attr/colorBackground"> - - <com.android.intentresolver.widget.RoundedRectImageView - android:id="@androidprv:id/content_preview_image_1_large" - android:transitionName="screenshot_preview_image" - android:layout_width="@dimen/chooser_preview_image_width" - android:layout_height="@dimen/chooser_preview_image_height" - android:layout_alignParentTop="true" - android:adjustViewBounds="true" - android:gravity="center" - android:scaleType="centerCrop"/> - - <com.android.intentresolver.widget.RoundedRectImageView - android:id="@androidprv:id/content_preview_image_2_large" - android:visibility="gone" - android:layout_width="@dimen/chooser_preview_image_width" - android:layout_height="@dimen/chooser_preview_image_height" - android:layout_alignParentTop="true" - android:layout_toRightOf="@androidprv:id/content_preview_image_1_large" - android:layout_marginLeft="10dp" - android:adjustViewBounds="true" - android:gravity="center" - android:scaleType="centerCrop"/> - - <com.android.intentresolver.widget.RoundedRectImageView - android:id="@androidprv:id/content_preview_image_2_small" - android:visibility="gone" - android:layout_width="@dimen/chooser_preview_image_width" - android:layout_height="65dp" - android:layout_alignParentTop="true" - android:layout_toRightOf="@androidprv:id/content_preview_image_1_large" - android:layout_marginLeft="10dp" - android:adjustViewBounds="true" - android:gravity="center" - android:scaleType="centerCrop"/> - - <com.android.intentresolver.widget.RoundedRectImageView - android:id="@androidprv:id/content_preview_image_3_small" - android:visibility="gone" - android:layout_width="@dimen/chooser_preview_image_width" - android:layout_height="65dp" - android:layout_below="@androidprv:id/content_preview_image_2_small" - android:layout_toRightOf="@androidprv:id/content_preview_image_1_large" - android:layout_marginLeft="10dp" - android:layout_marginTop="10dp" - android:adjustViewBounds="true" - android:gravity="center" - android:scaleType="centerCrop"/> - -</merge> diff --git a/java/src/com/android/intentresolver/ChooserActionFactory.java b/java/src/com/android/intentresolver/ChooserActionFactory.java index d0e6e53f..8dafae86 100644 --- a/java/src/com/android/intentresolver/ChooserActionFactory.java +++ b/java/src/com/android/intentresolver/ChooserActionFactory.java @@ -41,7 +41,6 @@ import com.android.intentresolver.chooser.DisplayResolveInfo; import com.android.intentresolver.chooser.TargetInfo; import com.android.intentresolver.contentpreview.ChooserContentPreviewUi; import com.android.intentresolver.flags.FeatureFlagRepository; -import com.android.intentresolver.flags.Flags; import com.android.intentresolver.widget.ActionRow; import com.android.internal.annotations.VisibleForTesting; @@ -161,9 +160,7 @@ public final class ChooserActionFactory implements ChooserContentPreviewUi.Actio finishCallback, logger), chooserRequest.getChooserActions(), - (featureFlagRepository.isEnabled(Flags.SHARESHEET_RESELECTION_ACTION) - ? chooserRequest.getModifyShareAction() - : null), + chooserRequest.getModifyShareAction(), onUpdateSharedTextIsExcluded, logger, finishCallback); diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java index 270fc299..dd0be4f0 100644 --- a/java/src/com/android/intentresolver/ChooserActivity.java +++ b/java/src/com/android/intentresolver/ChooserActivity.java @@ -87,7 +87,6 @@ import com.android.intentresolver.contentpreview.ChooserContentPreviewUi; import com.android.intentresolver.contentpreview.HeadlineGeneratorImpl; import com.android.intentresolver.flags.FeatureFlagRepository; import com.android.intentresolver.flags.FeatureFlagRepositoryFactory; -import com.android.intentresolver.flags.Flags; import com.android.intentresolver.grid.ChooserGridAdapter; import com.android.intentresolver.grid.DirectShareViewHolder; import com.android.intentresolver.model.AbstractResolverComparator; @@ -293,7 +292,6 @@ public class ChooserActivity extends ResolverActivity implements createPreviewImageLoader(), createChooserActionFactory(), mEnterTransitionAnimationDelegate, - mFeatureFlagRepository, new HeadlineGeneratorImpl(this)); setAdditionalTargets(mChooserRequest.getAdditionalTargets()); @@ -1341,15 +1339,11 @@ public class ChooserActivity extends ResolverActivity implements @VisibleForTesting protected ImageLoader createPreviewImageLoader() { final int cacheSize; - if (mFeatureFlagRepository.isEnabled(Flags.SHARESHEET_SCROLLABLE_IMAGE_PREVIEW)) { - float chooserWidth = getResources().getDimension(R.dimen.chooser_width); - // imageWidth = imagePreviewHeight / minAspectRatio (see ScrollableImagePreviewView) - float imageWidth = - getResources().getDimension(R.dimen.chooser_preview_image_height_tall) * 5 / 2; - cacheSize = (int) (Math.ceil(chooserWidth / imageWidth) + 2); - } else { - cacheSize = 3; - } + float chooserWidth = getResources().getDimension(R.dimen.chooser_width); + // imageWidth = imagePreviewHeight / minAspectRatio (see ScrollableImagePreviewView) + float imageWidth = + getResources().getDimension(R.dimen.chooser_preview_image_height_tall) * 5 / 2; + cacheSize = (int) (Math.ceil(chooserWidth / imageWidth) + 2); return new ImagePreviewImageLoader(this, getLifecycle(), cacheSize); } diff --git a/java/src/com/android/intentresolver/ChooserRequestParameters.java b/java/src/com/android/intentresolver/ChooserRequestParameters.java index 8e0014d6..f9004a9b 100644 --- a/java/src/com/android/intentresolver/ChooserRequestParameters.java +++ b/java/src/com/android/intentresolver/ChooserRequestParameters.java @@ -33,7 +33,6 @@ import android.util.Log; import android.util.Pair; import com.android.intentresolver.flags.FeatureFlagRepository; -import com.android.intentresolver.flags.Flags; import com.google.common.collect.ImmutableList; @@ -146,12 +145,8 @@ public class ChooserRequestParameters { mTargetIntentFilter = getTargetIntentFilter(mTarget); - mChooserActions = featureFlags.isEnabled(Flags.SHARESHEET_CUSTOM_ACTIONS) - ? getChooserActions(clientIntent) - : ImmutableList.of(); - mModifyShareAction = featureFlags.isEnabled(Flags.SHARESHEET_RESELECTION_ACTION) - ? getModifyShareAction(clientIntent) - : null; + mChooserActions = getChooserActions(clientIntent); + mModifyShareAction = getModifyShareAction(clientIntent); } public Intent getTargetIntent() { diff --git a/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java index 3509c67d..318aa627 100644 --- a/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java @@ -39,14 +39,11 @@ import android.view.ViewGroup; import androidx.annotation.Nullable; import com.android.intentresolver.ImageLoader; -import com.android.intentresolver.flags.FeatureFlagRepository; -import com.android.intentresolver.flags.Flags; import com.android.intentresolver.widget.ActionRow; import com.android.intentresolver.widget.ImagePreviewView.TransitionElementStatusCallback; import java.util.ArrayList; import java.util.List; -import java.util.Objects; import java.util.function.Consumer; /** @@ -103,7 +100,6 @@ public final class ChooserContentPreviewUi { ImageLoader imageLoader, ActionFactory actionFactory, TransitionElementStatusCallback transitionElementStatusCallback, - FeatureFlagRepository featureFlagRepository, HeadlineGenerator headlineGenerator) { mContentPreviewUi = createContentPreview( @@ -113,7 +109,6 @@ public final class ChooserContentPreviewUi { imageLoader, actionFactory, transitionElementStatusCallback, - featureFlagRepository, headlineGenerator); if (mContentPreviewUi.getType() != CONTENT_PREVIEW_IMAGE) { transitionElementStatusCallback.onAllTransitionElementsReady(); @@ -127,7 +122,6 @@ public final class ChooserContentPreviewUi { ImageLoader imageLoader, ActionFactory actionFactory, TransitionElementStatusCallback transitionElementStatusCallback, - FeatureFlagRepository featureFlagRepository, HeadlineGenerator headlineGenerator) { /* In {@link android.content.Intent#getType}, the app may specify a very general mime type @@ -145,7 +139,6 @@ public final class ChooserContentPreviewUi { targetIntent, actionFactory, imageLoader, - featureFlagRepository, headlineGenerator); } List<Uri> uris = extractContentUris(targetIntent); @@ -154,7 +147,6 @@ public final class ChooserContentPreviewUi { targetIntent, actionFactory, imageLoader, - featureFlagRepository, headlineGenerator); } ArrayList<FileInfo> files = new ArrayList<>(uris.size()); @@ -164,50 +156,15 @@ public final class ChooserContentPreviewUi { files, actionFactory, imageLoader, - featureFlagRepository, headlineGenerator); } - if (featureFlagRepository.isEnabled(Flags.SHARESHEET_SCROLLABLE_IMAGE_PREVIEW)) { - return new UnifiedContentPreviewUi( - files, - targetIntent.getCharSequenceExtra(Intent.EXTRA_TEXT), - actionFactory, - imageLoader, - typeClassifier, - transitionElementStatusCallback, - featureFlagRepository, - headlineGenerator); - } - if (previewCount < uris.size()) { - return new FileContentPreviewUi( - files, - actionFactory, - imageLoader, - featureFlagRepository, - headlineGenerator); - } - // The legacy (3-image) image preview is on it's way out and it's unlikely that we'd end up - // here. To preserve the legacy behavior, before using it, check that all uris are images. - for (FileInfo fileInfo: files) { - if (!typeClassifier.isImageType(fileInfo.getMimeType())) { - return new FileContentPreviewUi( - files, - actionFactory, - imageLoader, - featureFlagRepository, - headlineGenerator); - } - } - return new ImageContentPreviewUi( - files.stream() - .map(FileInfo::getPreviewUri) - .filter(Objects::nonNull) - .toList(), + return new UnifiedContentPreviewUi( + files, targetIntent.getCharSequenceExtra(Intent.EXTRA_TEXT), actionFactory, imageLoader, + typeClassifier, transitionElementStatusCallback, - featureFlagRepository, headlineGenerator); } @@ -323,7 +280,6 @@ public final class ChooserContentPreviewUi { Intent targetIntent, ChooserContentPreviewUi.ActionFactory actionFactory, ImageLoader imageLoader, - FeatureFlagRepository featureFlagRepository, HeadlineGenerator headlineGenerator) { CharSequence sharingText = targetIntent.getCharSequenceExtra(Intent.EXTRA_TEXT); String previewTitle = targetIntent.getStringExtra(Intent.EXTRA_TITLE); @@ -341,7 +297,6 @@ public final class ChooserContentPreviewUi { previewThumbnail, actionFactory, imageLoader, - featureFlagRepository, headlineGenerator); } diff --git a/java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java index 2a6bff5c..15ba96c0 100644 --- a/java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java @@ -37,8 +37,6 @@ import android.widget.TextView; import androidx.annotation.LayoutRes; import com.android.intentresolver.R; -import com.android.intentresolver.flags.FeatureFlagRepository; -import com.android.intentresolver.flags.Flags; import com.android.intentresolver.widget.ActionRow; import java.util.ArrayList; @@ -54,10 +52,8 @@ abstract class ContentPreviewUi { public abstract ViewGroup display( Resources resources, LayoutInflater layoutInflater, ViewGroup parent); - protected static int getActionRowLayout(FeatureFlagRepository featureFlagRepository) { - return featureFlagRepository.isEnabled(Flags.SHARESHEET_CUSTOM_ACTIONS) - ? R.layout.scrollable_chooser_action_row - : R.layout.chooser_action_row; + protected static int getActionRowLayout() { + return R.layout.scrollable_chooser_action_row; } protected static ActionRow inflateActionRow(ViewGroup parent, @LayoutRes int actionRowLayout) { @@ -71,12 +67,10 @@ abstract class ContentPreviewUi { protected static List<ActionRow.Action> createActions( List<ActionRow.Action> systemActions, - List<ActionRow.Action> customActions, - FeatureFlagRepository featureFlagRepository) { + List<ActionRow.Action> customActions) { ArrayList<ActionRow.Action> actions = new ArrayList<>(systemActions.size() + customActions.size()); - if (featureFlagRepository.isEnabled(Flags.SHARESHEET_CUSTOM_ACTIONS) - && customActions != null && !customActions.isEmpty()) { + if (customActions != null && !customActions.isEmpty()) { actions.addAll(customActions); } else { actions.addAll(systemActions); @@ -133,11 +127,9 @@ abstract class ContentPreviewUi { protected static void displayModifyShareAction( ViewGroup layout, - ChooserContentPreviewUi.ActionFactory actionFactory, - FeatureFlagRepository featureFlagRepository) { + ChooserContentPreviewUi.ActionFactory actionFactory) { ActionRow.Action modifyShareAction = actionFactory.getModifyShareAction(); - if (modifyShareAction != null && layout != null - && featureFlagRepository.isEnabled(Flags.SHARESHEET_RESELECTION_ACTION)) { + if (modifyShareAction != null && layout != null) { TextView modifyShareView = layout.findViewById(R.id.reselection_action); if (modifyShareView != null) { modifyShareView.setText(modifyShareAction.getLabel()); diff --git a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java index 52e20cf0..3012eec2 100644 --- a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java @@ -29,7 +29,6 @@ import androidx.annotation.LayoutRes; import com.android.intentresolver.ImageLoader; import com.android.intentresolver.R; -import com.android.intentresolver.flags.FeatureFlagRepository; import com.android.intentresolver.widget.ActionRow; import java.util.ArrayList; @@ -44,19 +43,16 @@ class FileContentPreviewUi extends ContentPreviewUi { private final List<FileInfo> mFiles; private final ChooserContentPreviewUi.ActionFactory mActionFactory; private final ImageLoader mImageLoader; - private final FeatureFlagRepository mFeatureFlagRepository; private final HeadlineGenerator mHeadlineGenerator; FileContentPreviewUi( List<FileInfo> files, ChooserContentPreviewUi.ActionFactory actionFactory, ImageLoader imageLoader, - FeatureFlagRepository featureFlagRepository, HeadlineGenerator headlineGenerator) { mFiles = files; mActionFactory = actionFactory; mImageLoader = imageLoader; - mFeatureFlagRepository = featureFlagRepository; mHeadlineGenerator = headlineGenerator; } @@ -68,13 +64,13 @@ class FileContentPreviewUi extends ContentPreviewUi { @Override public ViewGroup display(Resources resources, LayoutInflater layoutInflater, ViewGroup parent) { ViewGroup layout = displayInternal(resources, layoutInflater, parent); - displayModifyShareAction(layout, mActionFactory, mFeatureFlagRepository); + displayModifyShareAction(layout, mActionFactory); return layout; } private ViewGroup displayInternal( Resources resources, LayoutInflater layoutInflater, ViewGroup parent) { - @LayoutRes int actionRowLayout = getActionRowLayout(mFeatureFlagRepository); + @LayoutRes int actionRowLayout = getActionRowLayout(); ViewGroup contentPreviewLayout = (ViewGroup) layoutInflater.inflate( R.layout.chooser_grid_preview_file, parent, false); @@ -119,8 +115,7 @@ class FileContentPreviewUi extends ContentPreviewUi { actionRow.setActions( createActions( createFilePreviewActions(), - mActionFactory.createCustomActions(), - mFeatureFlagRepository)); + mActionFactory.createCustomActions())); } return contentPreviewLayout; diff --git a/java/src/com/android/intentresolver/contentpreview/ImageContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/ImageContentPreviewUi.java deleted file mode 100644 index f2c0564a..00000000 --- a/java/src/com/android/intentresolver/contentpreview/ImageContentPreviewUi.java +++ /dev/null @@ -1,193 +0,0 @@ -/* - * 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.contentpreview; - -import static com.android.intentresolver.contentpreview.ContentPreviewType.CONTENT_PREVIEW_IMAGE; - -import android.content.res.Resources; -import android.net.Uri; -import android.text.TextUtils; -import android.text.util.Linkify; -import android.transition.TransitionManager; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewStub; -import android.widget.CheckBox; -import android.widget.TextView; - -import androidx.annotation.LayoutRes; -import androidx.annotation.Nullable; - -import com.android.intentresolver.ImageLoader; -import com.android.intentresolver.R; -import com.android.intentresolver.flags.FeatureFlagRepository; -import com.android.intentresolver.flags.Flags; -import com.android.intentresolver.widget.ActionRow; -import com.android.intentresolver.widget.ChooserImagePreviewView; -import com.android.intentresolver.widget.ImagePreviewView.TransitionElementStatusCallback; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.Consumer; - -class ImageContentPreviewUi extends ContentPreviewUi { - private final List<Uri> mImageUris; - @Nullable - private final CharSequence mText; - private final ChooserContentPreviewUi.ActionFactory mActionFactory; - private final ImageLoader mImageLoader; - private final TransitionElementStatusCallback mTransitionElementStatusCallback; - private final FeatureFlagRepository mFeatureFlagRepository; - private final HeadlineGenerator mHeadlineGenerator; - - ImageContentPreviewUi( - List<Uri> imageUris, - @Nullable CharSequence text, - ChooserContentPreviewUi.ActionFactory actionFactory, - ImageLoader imageLoader, - TransitionElementStatusCallback transitionElementStatusCallback, - FeatureFlagRepository featureFlagRepository, - HeadlineGenerator headlineGenerator) { - mImageUris = imageUris; - mText = text; - mActionFactory = actionFactory; - mImageLoader = imageLoader; - mTransitionElementStatusCallback = transitionElementStatusCallback; - mFeatureFlagRepository = featureFlagRepository; - mHeadlineGenerator = headlineGenerator; - - mImageLoader.prePopulate(mImageUris); - } - - @Override - public int getType() { - return CONTENT_PREVIEW_IMAGE; - } - - @Override - public ViewGroup display(Resources resources, LayoutInflater layoutInflater, ViewGroup parent) { - ViewGroup layout = displayInternal(layoutInflater, parent); - displayModifyShareAction(layout, mActionFactory, mFeatureFlagRepository); - return layout; - } - - private ViewGroup displayInternal(LayoutInflater layoutInflater, ViewGroup parent) { - @LayoutRes int actionRowLayout = getActionRowLayout(mFeatureFlagRepository); - ViewGroup contentPreviewLayout = (ViewGroup) layoutInflater.inflate( - R.layout.chooser_grid_preview_image, parent, false); - ChooserImagePreviewView imagePreview = inflateImagePreviewView(contentPreviewLayout); - - final ActionRow actionRow = inflateActionRow(contentPreviewLayout, actionRowLayout); - if (actionRow != null) { - actionRow.setActions( - createActions( - createImagePreviewActions(), - mActionFactory.createCustomActions(), - mFeatureFlagRepository)); - } - - if (mImageUris.size() == 0) { - Log.i( - TAG, - "Attempted to display image preview area with zero" - + " available images detected in EXTRA_STREAM list"); - imagePreview.setVisibility(View.GONE); - mTransitionElementStatusCallback.onAllTransitionElementsReady(); - return contentPreviewLayout; - } - - setTextInImagePreviewVisibility(contentPreviewLayout, mActionFactory); - imagePreview.setTransitionElementStatusCallback(mTransitionElementStatusCallback); - imagePreview.setImages(mImageUris, mImageLoader); - - updateHeadline(contentPreviewLayout); - - return contentPreviewLayout; - } - - private List<ActionRow.Action> createImagePreviewActions() { - ArrayList<ActionRow.Action> actions = new ArrayList<>(2); - //TODO: add copy action; - ActionRow.Action action = mActionFactory.createNearbyButton(); - if (action != null) { - actions.add(action); - } - action = mActionFactory.createEditButton(); - if (action != null) { - actions.add(action); - } - return actions; - } - - private ChooserImagePreviewView inflateImagePreviewView(ViewGroup previewLayout) { - ViewStub stub = previewLayout.findViewById(R.id.image_preview_stub); - if (stub != null) { - stub.setLayoutResource(R.layout.chooser_image_preview_view); - stub.inflate(); - } - return previewLayout.findViewById( - com.android.internal.R.id.content_preview_image_area); - } - - private void updateHeadline(ViewGroup contentPreview) { - CheckBox includeTextCheckbox = contentPreview.requireViewById(R.id.include_text_action); - if (includeTextCheckbox.getVisibility() == View.VISIBLE - && includeTextCheckbox.isChecked()) { - displayHeadline(contentPreview, mHeadlineGenerator.getImageWithTextHeadline(mText)); - } else { - displayHeadline( - contentPreview, mHeadlineGenerator.getImagesHeadline(mImageUris.size())); - } - } - - private void setTextInImagePreviewVisibility( - ViewGroup contentPreview, ChooserContentPreviewUi.ActionFactory actionFactory) { - int visibility = mFeatureFlagRepository.isEnabled(Flags.SHARESHEET_IMAGE_AND_TEXT_PREVIEW) - && !TextUtils.isEmpty(mText) - ? View.VISIBLE - : View.GONE; - - final TextView textView = contentPreview - .requireViewById(com.android.internal.R.id.content_preview_text); - CheckBox actionView = contentPreview - .requireViewById(R.id.include_text_action); - textView.setVisibility(visibility); - boolean isLink = visibility == View.VISIBLE && HttpUriMatcher.isHttpUri(mText.toString()); - textView.setAutoLinkMask(isLink ? Linkify.WEB_URLS : 0); - textView.setText(mText); - - if (visibility == View.VISIBLE) { - final int[] actionLabels = isLink - ? new int[] { R.string.include_link, R.string.exclude_link } - : new int[] { R.string.include_text, R.string.exclude_text }; - final Consumer<Boolean> shareTextAction = actionFactory.getExcludeSharedTextAction(); - actionView.setChecked(true); - actionView.setText(actionLabels[1]); - shareTextAction.accept(false); - actionView.setOnCheckedChangeListener((view, isChecked) -> { - view.setText(actionLabels[isChecked ? 1 : 0]); - TransitionManager.beginDelayedTransition((ViewGroup) textView.getParent()); - textView.setVisibility(isChecked ? View.VISIBLE : View.GONE); - shareTextAction.accept(!isChecked); - updateHeadline(contentPreview); - }); - } - actionView.setVisibility(visibility); - } -} diff --git a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java index d0cba5bb..70df6479 100644 --- a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java @@ -30,7 +30,6 @@ import androidx.annotation.Nullable; import com.android.intentresolver.ImageLoader; import com.android.intentresolver.R; -import com.android.intentresolver.flags.FeatureFlagRepository; import com.android.intentresolver.widget.ActionRow; import java.util.ArrayList; @@ -45,7 +44,6 @@ class TextContentPreviewUi extends ContentPreviewUi { private final Uri mPreviewThumbnail; private final ImageLoader mImageLoader; private final ChooserContentPreviewUi.ActionFactory mActionFactory; - private final FeatureFlagRepository mFeatureFlagRepository; private final HeadlineGenerator mHeadlineGenerator; TextContentPreviewUi( @@ -54,14 +52,12 @@ class TextContentPreviewUi extends ContentPreviewUi { @Nullable Uri previewThumbnail, ChooserContentPreviewUi.ActionFactory actionFactory, ImageLoader imageLoader, - FeatureFlagRepository featureFlagRepository, HeadlineGenerator headlineGenerator) { mSharingText = sharingText; mPreviewTitle = previewTitle; mPreviewThumbnail = previewThumbnail; mImageLoader = imageLoader; mActionFactory = actionFactory; - mFeatureFlagRepository = featureFlagRepository; mHeadlineGenerator = headlineGenerator; } @@ -73,14 +69,14 @@ class TextContentPreviewUi extends ContentPreviewUi { @Override public ViewGroup display(Resources resources, LayoutInflater layoutInflater, ViewGroup parent) { ViewGroup layout = displayInternal(layoutInflater, parent); - displayModifyShareAction(layout, mActionFactory, mFeatureFlagRepository); + displayModifyShareAction(layout, mActionFactory); return layout; } private ViewGroup displayInternal( LayoutInflater layoutInflater, ViewGroup parent) { - @LayoutRes int actionRowLayout = getActionRowLayout(mFeatureFlagRepository); + @LayoutRes int actionRowLayout = getActionRowLayout(); ViewGroup contentPreviewLayout = (ViewGroup) layoutInflater.inflate( R.layout.chooser_grid_preview_text, parent, false); @@ -89,8 +85,7 @@ class TextContentPreviewUi extends ContentPreviewUi { actionRow.setActions( createActions( createTextPreviewActions(), - mActionFactory.createCustomActions(), - mFeatureFlagRepository)); + mActionFactory.createCustomActions())); } if (mSharingText == null) { diff --git a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java index 2d2ae52b..00a11e30 100644 --- a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java @@ -35,8 +35,6 @@ import androidx.annotation.Nullable; import com.android.intentresolver.ImageLoader; import com.android.intentresolver.R; -import com.android.intentresolver.flags.FeatureFlagRepository; -import com.android.intentresolver.flags.Flags; import com.android.intentresolver.widget.ActionRow; import com.android.intentresolver.widget.ImagePreviewView.TransitionElementStatusCallback; import com.android.intentresolver.widget.ScrollableImagePreviewView; @@ -54,7 +52,6 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { private final ImageLoader mImageLoader; private final MimeTypeClassifier mTypeClassifier; private final TransitionElementStatusCallback mTransitionElementStatusCallback; - private final FeatureFlagRepository mFeatureFlagRepository; private final HeadlineGenerator mHeadlineGenerator; UnifiedContentPreviewUi( @@ -64,7 +61,6 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { ImageLoader imageLoader, MimeTypeClassifier typeClassifier, TransitionElementStatusCallback transitionElementStatusCallback, - FeatureFlagRepository featureFlagRepository, HeadlineGenerator headlineGenerator) { mFiles = files; mText = text; @@ -72,7 +68,6 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { mImageLoader = imageLoader; mTypeClassifier = typeClassifier; mTransitionElementStatusCallback = transitionElementStatusCallback; - mFeatureFlagRepository = featureFlagRepository; mHeadlineGenerator = headlineGenerator; mImageLoader.prePopulate(mFiles.stream() @@ -89,12 +84,12 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { @Override public ViewGroup display(Resources resources, LayoutInflater layoutInflater, ViewGroup parent) { ViewGroup layout = displayInternal(layoutInflater, parent); - displayModifyShareAction(layout, mActionFactory, mFeatureFlagRepository); + displayModifyShareAction(layout, mActionFactory); return layout; } private ViewGroup displayInternal(LayoutInflater layoutInflater, ViewGroup parent) { - @LayoutRes int actionRowLayout = getActionRowLayout(mFeatureFlagRepository); + @LayoutRes int actionRowLayout = getActionRowLayout(); ViewGroup contentPreviewLayout = (ViewGroup) layoutInflater.inflate( R.layout.chooser_grid_preview_image, parent, false); ScrollableImagePreviewView imagePreview = inflateImagePreviewView(contentPreviewLayout); @@ -104,8 +99,7 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { actionRow.setActions( createActions( createImagePreviewActions(), - mActionFactory.createCustomActions(), - mFeatureFlagRepository)); + mActionFactory.createCustomActions())); } if (mFiles.size() == 0) { @@ -140,10 +134,7 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { mFiles.size() - previews.size(), mImageLoader); - if (mFeatureFlagRepository.isEnabled(Flags.SHARESHEET_IMAGE_AND_TEXT_PREVIEW) - && !TextUtils.isEmpty(mText) - && mFiles.size() == 1 - && allImages) { + if (!TextUtils.isEmpty(mText) && mFiles.size() == 1 && allImages) { setTextInImagePreviewVisibility(contentPreviewLayout, mActionFactory); updateTextWithImageHeadline(contentPreviewLayout); } else { diff --git a/java/src/com/android/intentresolver/flags/Flags.kt b/java/src/com/android/intentresolver/flags/Flags.kt index 40f32bf3..b303dd1a 100644 --- a/java/src/com/android/intentresolver/flags/Flags.kt +++ b/java/src/com/android/intentresolver/flags/Flags.kt @@ -21,32 +21,8 @@ import com.android.systemui.flags.UnreleasedFlag // Flag id, name and namespace should be kept in sync with [com.android.systemui.flags.Flags] to // make the flags available in the flag flipper app (see go/sysui-flags). +// All flags added should be included in UnbundledChooserActivityTest.ALL_FLAGS. object Flags { - const val SHARESHEET_CUSTOM_ACTIONS_NAME = "sharesheet_custom_actions" - const val SHARESHEET_RESELECTION_ACTION_NAME = "sharesheet_reselection_action" - const val SHARESHEET_IMAGE_AND_TEXT_PREVIEW_NAME = "sharesheet_image_text_preview" - const val SHARESHEET_SCROLLABLE_IMAGE_PREVIEW_NAME = "sharesheet_scrollable_image_preview" - - // TODO(b/266983432) Tracking Bug - @JvmField - val SHARESHEET_CUSTOM_ACTIONS = releasedFlag(1501, SHARESHEET_CUSTOM_ACTIONS_NAME) - - // TODO(b/266982749) Tracking Bug - @JvmField - val SHARESHEET_RESELECTION_ACTION = releasedFlag(1502, SHARESHEET_RESELECTION_ACTION_NAME) - - // TODO(b/266983474) Tracking Bug - @JvmField - val SHARESHEET_IMAGE_AND_TEXT_PREVIEW = releasedFlag( - id = 1503, name = SHARESHEET_IMAGE_AND_TEXT_PREVIEW_NAME - ) - - // TODO(b/267355521) Tracking Bug - @JvmField - val SHARESHEET_SCROLLABLE_IMAGE_PREVIEW = releasedFlag( - 1504, SHARESHEET_SCROLLABLE_IMAGE_PREVIEW_NAME - ) - private fun releasedFlag(id: Int, name: String) = ReleasedFlag(id, name, "systemui") diff --git a/java/src/com/android/intentresolver/widget/ChooserImagePreviewView.kt b/java/src/com/android/intentresolver/widget/ChooserImagePreviewView.kt deleted file mode 100644 index 6273296d..00000000 --- a/java/src/com/android/intentresolver/widget/ChooserImagePreviewView.kt +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright (C) 2022 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.widget - -import android.animation.ObjectAnimator -import android.content.Context -import android.net.Uri -import android.util.AttributeSet -import android.view.LayoutInflater -import android.view.animation.DecelerateInterpolator -import android.widget.RelativeLayout -import androidx.core.view.isVisible -import com.android.intentresolver.R -import com.android.intentresolver.widget.ImagePreviewView.TransitionElementStatusCallback -import kotlinx.coroutines.Job -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.launch -import com.android.internal.R as IntR - -private const val IMAGE_FADE_IN_MILLIS = 150L - -class ChooserImagePreviewView : RelativeLayout, ImagePreviewView { - - constructor(context: Context) : this(context, null) - constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) - - constructor( - context: Context, attrs: AttributeSet?, defStyleAttr: Int - ) : this(context, attrs, defStyleAttr, 0) - - constructor( - context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int - ) : super(context, attrs, defStyleAttr, defStyleRes) - - private val coroutineScope = MainScope() - private lateinit var mainImage: RoundedRectImageView - private lateinit var secondLargeImage: RoundedRectImageView - private lateinit var secondSmallImage: RoundedRectImageView - private lateinit var thirdImage: RoundedRectImageView - - private var loadImageJob: Job? = null - private var transitionStatusElementCallback: TransitionElementStatusCallback? = null - - override fun onFinishInflate() { - LayoutInflater.from(context) - .inflate(R.layout.chooser_image_preview_view_internals, this, true) - mainImage = requireViewById(IntR.id.content_preview_image_1_large) - secondLargeImage = requireViewById(IntR.id.content_preview_image_2_large) - secondSmallImage = requireViewById(IntR.id.content_preview_image_2_small) - thirdImage = requireViewById(IntR.id.content_preview_image_3_small) - } - - /** - * Specifies a transition animation target readiness callback. The callback will be - * invoked once when views preparation is done. - * Should be called before [setImages]. - */ - override fun setTransitionElementStatusCallback(callback: TransitionElementStatusCallback?) { - transitionStatusElementCallback = callback - } - - fun setImages(uris: List<Uri>, imageLoader: ImageLoader) { - loadImageJob?.cancel() - loadImageJob = coroutineScope.launch { - when (uris.size) { - 0 -> hideAllViews() - 1 -> showOneImage(uris, imageLoader) - 2 -> showTwoImages(uris, imageLoader) - else -> showThreeImages(uris, imageLoader) - } - } - } - - private fun hideAllViews() { - mainImage.isVisible = false - secondLargeImage.isVisible = false - secondSmallImage.isVisible = false - thirdImage.isVisible = false - invokeTransitionViewReadyCallback() - } - - private suspend fun showOneImage(uris: List<Uri>, imageLoader: ImageLoader) { - secondLargeImage.isVisible = false - secondSmallImage.isVisible = false - thirdImage.isVisible = false - showImages(uris, imageLoader, mainImage) - } - - private suspend fun showTwoImages(uris: List<Uri>, imageLoader: ImageLoader) { - secondSmallImage.isVisible = false - thirdImage.isVisible = false - showImages(uris, imageLoader, mainImage, secondLargeImage) - } - - private suspend fun showThreeImages(uris: List<Uri>, imageLoader: ImageLoader) { - secondLargeImage.isVisible = false - showImages(uris, imageLoader, mainImage, secondSmallImage, thirdImage) - thirdImage.setExtraImageCount(uris.size - 3) - } - - private suspend fun showImages( - uris: List<Uri>, imageLoader: ImageLoader, vararg views: RoundedRectImageView - ) = coroutineScope { - for (i in views.indices) { - launch { - loadImageIntoView(views[i], uris[i], imageLoader) - } - } - } - - private suspend fun loadImageIntoView( - view: RoundedRectImageView, uri: Uri, imageLoader: ImageLoader - ) { - val bitmap = runCatching { - imageLoader(uri) - }.getOrDefault(null) - if (bitmap == null) { - view.isVisible = false - if (view === mainImage) { - invokeTransitionViewReadyCallback() - } - } else { - view.isVisible = true - view.setImageBitmap(bitmap) - - view.alpha = 0f - ObjectAnimator.ofFloat(view, "alpha", 0.0f, 1.0f).apply { - interpolator = DecelerateInterpolator(1.0f) - duration = IMAGE_FADE_IN_MILLIS - start() - } - if (view === mainImage && transitionStatusElementCallback != null) { - view.waitForPreDraw() - invokeTransitionViewReadyCallback() - } - } - } - - private fun invokeTransitionViewReadyCallback() { - transitionStatusElementCallback?.apply { - if (mainImage.isVisible && mainImage.drawable != null) { - mainImage.transitionName?.let { onTransitionElementReady(it) } - } - onAllTransitionElementsReady() - } - transitionStatusElementCallback = null - } -} diff --git a/java/tests/src/com/android/intentresolver/ChooserActionFactoryTest.kt b/java/tests/src/com/android/intentresolver/ChooserActionFactoryTest.kt index 98c7d5ee..0a8c22b7 100644 --- a/java/tests/src/com/android/intentresolver/ChooserActionFactoryTest.kt +++ b/java/tests/src/com/android/intentresolver/ChooserActionFactoryTest.kt @@ -71,7 +71,6 @@ class ChooserActionFactoryTest { @Before fun setup() { - whenever(flags.isEnabled(Flags.SHARESHEET_RESELECTION_ACTION)).thenReturn(true) context.registerReceiver(testReceiver, IntentFilter(testAction)) } @@ -106,14 +105,6 @@ class ChooserActionFactoryTest { } @Test - fun testNoModifyShareAction_flagDisabled() { - whenever(flags.isEnabled(Flags.SHARESHEET_RESELECTION_ACTION)).thenReturn(false) - val factory = createFactory(includeModifyShare = true) - - assertThat(factory.modifyShareAction).isNull() - } - - @Test fun testModifyShareAction() { val factory = createFactory(includeModifyShare = true) diff --git a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java index 6744d625..eb340224 100644 --- a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java +++ b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java @@ -104,7 +104,6 @@ import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.rule.ActivityTestRule; import com.android.intentresolver.chooser.DisplayResolveInfo; -import com.android.intentresolver.flags.Flags; import com.android.intentresolver.shortcuts.ShortcutLoader; import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; @@ -168,11 +167,7 @@ public class UnbundledChooserActivityTest { }; private static final List<BooleanFlag> ALL_FLAGS = - Arrays.asList( - Flags.SHARESHEET_CUSTOM_ACTIONS, - Flags.SHARESHEET_RESELECTION_ACTION, - Flags.SHARESHEET_IMAGE_AND_TEXT_PREVIEW, - Flags.SHARESHEET_SCROLLABLE_IMAGE_PREVIEW); + Arrays.asList(); private static final Map<BooleanFlag, Boolean> ALL_FLAGS_OFF = createAllFlagsOverride(false); @@ -181,6 +176,15 @@ public class UnbundledChooserActivityTest { @Parameterized.Parameters public static Collection packageManagers() { + if (ALL_FLAGS.isEmpty()) { + // No flags to toggle between, so just two configurations. + return Arrays.asList(new Object[][] { + // Default PackageManager and all flags off + { DEFAULT_PM, ALL_FLAGS_OFF}, + // No App Prediction Service and all flags off + { NO_APP_PREDICTION_SERVICE_PM, ALL_FLAGS_OFF }, + }); + } return Arrays.asList(new Object[][] { // Default PackageManager and all flags off { DEFAULT_PM, ALL_FLAGS_OFF}, @@ -684,9 +688,6 @@ public class UnbundledChooserActivityTest { } @Test - @RequireFeatureFlags( - flags = { Flags.SHARESHEET_IMAGE_AND_TEXT_PREVIEW_NAME }, - values = { true }) public void testImagePlusTextSharing_ExcludeText() { Intent sendIntent = createSendImageIntent( Uri.parse("android.resource://com.android.frameworks.coretests/" @@ -727,9 +728,6 @@ public class UnbundledChooserActivityTest { } @Test - @RequireFeatureFlags( - flags = { Flags.SHARESHEET_IMAGE_AND_TEXT_PREVIEW_NAME }, - values = { true }) public void testImagePlusTextSharing_RemoveAndAddBackText() { Intent sendIntent = createSendImageIntent( Uri.parse("android.resource://com.android.frameworks.coretests/" @@ -774,9 +772,6 @@ public class UnbundledChooserActivityTest { } @Test - @RequireFeatureFlags( - flags = { Flags.SHARESHEET_IMAGE_AND_TEXT_PREVIEW_NAME }, - values = { true }) public void testImagePlusTextSharing_TextExclusionDoesNotAffectAlternativeIntent() { Intent sendIntent = createSendImageIntent( Uri.parse("android.resource://com.android.frameworks.coretests/" @@ -945,74 +940,6 @@ public class UnbundledChooserActivityTest { } @Test - @RequireFeatureFlags( - flags = { Flags.SHARESHEET_SCROLLABLE_IMAGE_PREVIEW_NAME }, - values = { false }) - public void twoVisibleImagePreview() { - Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/" - + R.drawable.test320x240); - - ArrayList<Uri> uris = new ArrayList<>(); - uris.add(uri); - uris.add(uri); - - Intent sendIntent = createSendUriIntentWithPreview(uris); - ChooserActivityOverrideData.getInstance().previewThumbnail = createBitmap(); - ChooserActivityOverrideData.getInstance().isImageType = true; - - List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2); - - setupResolverControllers(resolvedComponentInfos); - mActivityRule.launchActivity(Intent.createChooser(sendIntent, null)); - waitForIdle(); - onView(withId(com.android.internal.R.id.content_preview_image_1_large)) - .check(matches(isDisplayed())); - onView(withId(com.android.internal.R.id.content_preview_image_2_large)) - .check(matches(isDisplayed())); - onView(withId(com.android.internal.R.id.content_preview_image_2_small)) - .check(matches(not(isDisplayed()))); - onView(withId(com.android.internal.R.id.content_preview_image_3_small)) - .check(matches(not(isDisplayed()))); - } - - @Test - @RequireFeatureFlags( - flags = { Flags.SHARESHEET_SCROLLABLE_IMAGE_PREVIEW_NAME }, - values = { false }) - public void threeOrMoreVisibleImagePreview() { - Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/" - + R.drawable.test320x240); - - ArrayList<Uri> uris = new ArrayList<>(); - uris.add(uri); - uris.add(uri); - uris.add(uri); - uris.add(uri); - uris.add(uri); - - Intent sendIntent = createSendUriIntentWithPreview(uris); - ChooserActivityOverrideData.getInstance().previewThumbnail = createBitmap(); - ChooserActivityOverrideData.getInstance().isImageType = true; - - List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2); - - setupResolverControllers(resolvedComponentInfos); - mActivityRule.launchActivity(Intent.createChooser(sendIntent, null)); - waitForIdle(); - onView(withId(com.android.internal.R.id.content_preview_image_1_large)) - .check(matches(isDisplayed())); - onView(withId(com.android.internal.R.id.content_preview_image_2_large)) - .check(matches(not(isDisplayed()))); - onView(withId(com.android.internal.R.id.content_preview_image_2_small)) - .check(matches(isDisplayed())); - onView(withId(com.android.internal.R.id.content_preview_image_3_small)) - .check(matches(isDisplayed())); - } - - @Test - @RequireFeatureFlags( - flags = { Flags.SHARESHEET_SCROLLABLE_IMAGE_PREVIEW_NAME }, - values = { true }) public void testManyVisibleImagePreview_ScrollableImagePreview() { Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/" + R.drawable.test320x240); @@ -1050,9 +977,6 @@ public class UnbundledChooserActivityTest { } @Test - @RequireFeatureFlags( - flags = { Flags.SHARESHEET_IMAGE_AND_TEXT_PREVIEW_NAME }, - values = { true }) public void testImageAndTextPreview() { final Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/" + R.drawable.test320x240); @@ -1076,9 +1000,6 @@ public class UnbundledChooserActivityTest { } @Test - @RequireFeatureFlags( - flags = { Flags.SHARESHEET_IMAGE_AND_TEXT_PREVIEW_NAME }, - values = { true }) public void testNoTextPreviewWhenTextIsSharedWithMultipleImages() { final Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/" + R.drawable.test320x240); @@ -1719,9 +1640,6 @@ public class UnbundledChooserActivityTest { } @Test - @RequireFeatureFlags( - flags = { Flags.SHARESHEET_CUSTOM_ACTIONS_NAME }, - values = { true }) public void testLaunchWithCustomAction() throws InterruptedException { List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2); setupResolverControllers(resolvedComponentInfos); @@ -1765,9 +1683,6 @@ public class UnbundledChooserActivityTest { } @Test - @RequireFeatureFlags( - flags = { Flags.SHARESHEET_RESELECTION_ACTION_NAME }, - values = { true }) public void testLaunchWithShareModification() throws InterruptedException { List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2); setupResolverControllers(resolvedComponentInfos); diff --git a/java/tests/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt b/java/tests/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt index 82bf94c4..7b9a0ce6 100644 --- a/java/tests/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt +++ b/java/tests/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt @@ -22,11 +22,9 @@ import android.content.Intent import android.graphics.Bitmap import android.net.Uri import com.android.intentresolver.ImageLoader -import com.android.intentresolver.TestFeatureFlagRepository import com.android.intentresolver.any import com.android.intentresolver.anyOrNull import com.android.intentresolver.contentpreview.ChooserContentPreviewUi.ActionFactory -import com.android.intentresolver.flags.Flags import com.android.intentresolver.mock import com.android.intentresolver.whenever import com.android.intentresolver.widget.ActionRow @@ -61,11 +59,6 @@ class ChooserContentPreviewUiTest { override fun getExcludeSharedTextAction(): Consumer<Boolean> = Consumer<Boolean> {} } private val transitionCallback = mock<ImagePreviewView.TransitionElementStatusCallback>() - private val featureFlagRepository = TestFeatureFlagRepository( - mapOf( - Flags.SHARESHEET_SCROLLABLE_IMAGE_PREVIEW to true - ) - ) @Test fun test_ChooserContentPreview_non_send_intent_action_to_text_preview() { @@ -77,7 +70,6 @@ class ChooserContentPreviewUiTest { imageLoader, actionFactory, transitionCallback, - featureFlagRepository, headlineGenerator ) assertThat(testSubject.preferredContentPreview) @@ -98,7 +90,6 @@ class ChooserContentPreviewUiTest { imageLoader, actionFactory, transitionCallback, - featureFlagRepository, headlineGenerator ) assertThat(testSubject.preferredContentPreview) @@ -120,7 +111,6 @@ class ChooserContentPreviewUiTest { imageLoader, actionFactory, transitionCallback, - featureFlagRepository, headlineGenerator ) assertThat(testSubject.preferredContentPreview) @@ -142,7 +132,6 @@ class ChooserContentPreviewUiTest { imageLoader, actionFactory, transitionCallback, - featureFlagRepository, headlineGenerator ) assertThat(testSubject.preferredContentPreview) @@ -165,7 +154,6 @@ class ChooserContentPreviewUiTest { imageLoader, actionFactory, transitionCallback, - featureFlagRepository, headlineGenerator ) assertThat(testSubject.preferredContentPreview) @@ -191,7 +179,6 @@ class ChooserContentPreviewUiTest { imageLoader, actionFactory, transitionCallback, - featureFlagRepository, headlineGenerator ) assertThat(testSubject.preferredContentPreview) @@ -215,7 +202,6 @@ class ChooserContentPreviewUiTest { imageLoader, actionFactory, transitionCallback, - featureFlagRepository, headlineGenerator ) assertThat(testSubject.preferredContentPreview) @@ -245,7 +231,6 @@ class ChooserContentPreviewUiTest { imageLoader, actionFactory, transitionCallback, - featureFlagRepository, headlineGenerator ) assertThat(testSubject.preferredContentPreview) @@ -275,7 +260,6 @@ class ChooserContentPreviewUiTest { imageLoader, actionFactory, transitionCallback, - featureFlagRepository, headlineGenerator ) assertThat(testSubject.preferredContentPreview) @@ -307,7 +291,6 @@ class ChooserContentPreviewUiTest { imageLoader, actionFactory, transitionCallback, - featureFlagRepository, headlineGenerator ) assertThat(testSubject.preferredContentPreview) @@ -337,7 +320,6 @@ class ChooserContentPreviewUiTest { imageLoader, actionFactory, transitionCallback, - featureFlagRepository, headlineGenerator ) assertThat(testSubject.preferredContentPreview) diff --git a/java/tests/src/com/android/intentresolver/contentpreview/ContentPreviewUiTest.kt b/java/tests/src/com/android/intentresolver/contentpreview/ContentPreviewUiTest.kt index 2b78a262..c6a47515 100644 --- a/java/tests/src/com/android/intentresolver/contentpreview/ContentPreviewUiTest.kt +++ b/java/tests/src/com/android/intentresolver/contentpreview/ContentPreviewUiTest.kt @@ -19,15 +19,12 @@ package com.android.intentresolver.contentpreview import android.content.res.Resources import android.view.LayoutInflater import android.view.ViewGroup -import com.android.intentresolver.TestFeatureFlagRepository -import com.android.intentresolver.flags.FeatureFlagRepository -import com.android.intentresolver.flags.Flags import com.android.intentresolver.widget.ActionRow import com.google.common.truth.Truth.assertThat import org.junit.Test class ContentPreviewUiTest { - private class TestablePreview(private val flags: FeatureFlagRepository) : ContentPreviewUi() { + private class TestablePreview() : ContentPreviewUi() { override fun getType() = 0 override fun display( @@ -43,18 +40,13 @@ class ContentPreviewUiTest { system: List<ActionRow.Action>, custom: List<ActionRow.Action> ): List<ActionRow.Action> { - return createActions(system, custom, flags) + return createActions(system, custom) } } @Test fun testCreateActions() { - val featureFlagRepository = TestFeatureFlagRepository( - mapOf( - Flags.SHARESHEET_CUSTOM_ACTIONS to true - ) - ) - val preview = TestablePreview(featureFlagRepository) + val preview = TestablePreview() val system = listOf(ActionRow.Action(label="system", icon=null) {}) val custom = listOf(ActionRow.Action(label="custom", icon=null) {}) @@ -62,19 +54,4 @@ class ContentPreviewUiTest { assertThat(preview.makeActions(system, custom)).isEqualTo(custom) assertThat(preview.makeActions(system, listOf())).isEqualTo(system) } - - @Test - fun testCreateActions_flagDisabled() { - val featureFlagRepository = TestFeatureFlagRepository( - mapOf( - Flags.SHARESHEET_CUSTOM_ACTIONS to false - ) - ) - val preview = TestablePreview(featureFlagRepository) - - val system = listOf(ActionRow.Action(label="system", icon=null) {}) - val custom = listOf(ActionRow.Action(label="custom", icon=null) {}) - - assertThat(preview.makeActions(system, custom)).isEqualTo(system) - } } |