Remove SHARESHEET_SCROLLABLE_IMAGE_PREVIEW

Also simplify some flag testing stuff when there are no flags being
tested.

Bug: 267355521
Test: atest IntentResolverUnitTests
Change-Id: I2ec39d38605d4e1b9df5bb22542623cdeb1e51da
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 e81349c..0000000
--- 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 2b93edf..0000000
--- 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/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index 270fc29..dd0be4f 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.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 @@
                 createPreviewImageLoader(),
                 createChooserActionFactory(),
                 mEnterTransitionAnimationDelegate,
-                mFeatureFlagRepository,
                 new HeadlineGeneratorImpl(this));
 
         setAdditionalTargets(mChooserRequest.getAdditionalTargets());
@@ -1341,15 +1339,11 @@
     @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/contentpreview/ChooserContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java
index 3509c67..318aa62 100644
--- a/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java
@@ -39,14 +39,11 @@
 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 @@
             ImageLoader imageLoader,
             ActionFactory actionFactory,
             TransitionElementStatusCallback transitionElementStatusCallback,
-            FeatureFlagRepository featureFlagRepository,
             HeadlineGenerator headlineGenerator) {
 
         mContentPreviewUi = createContentPreview(
@@ -113,7 +109,6 @@
                 imageLoader,
                 actionFactory,
                 transitionElementStatusCallback,
-                featureFlagRepository,
                 headlineGenerator);
         if (mContentPreviewUi.getType() != CONTENT_PREVIEW_IMAGE) {
             transitionElementStatusCallback.onAllTransitionElementsReady();
@@ -127,7 +122,6 @@
             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 @@
                     targetIntent,
                     actionFactory,
                     imageLoader,
-                    featureFlagRepository,
                     headlineGenerator);
         }
         List<Uri> uris = extractContentUris(targetIntent);
@@ -154,7 +147,6 @@
                     targetIntent,
                     actionFactory,
                     imageLoader,
-                    featureFlagRepository,
                     headlineGenerator);
         }
         ArrayList<FileInfo> files = new ArrayList<>(uris.size());
@@ -164,50 +156,15 @@
                     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 @@
             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 @@
                 previewThumbnail,
                 actionFactory,
                 imageLoader,
-                featureFlagRepository,
                 headlineGenerator);
     }
 
diff --git a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java
index e65538a..3012eec 100644
--- a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java
@@ -29,7 +29,6 @@
 
 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 @@
     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;
     }
 
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 85ae2ad..0000000
--- a/java/src/com/android/intentresolver/contentpreview/ImageContentPreviewUi.java
+++ /dev/null
@@ -1,188 +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.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);
-        return layout;
-    }
-
-    private ViewGroup displayInternal(LayoutInflater layoutInflater, ViewGroup parent) {
-        @LayoutRes int actionRowLayout = getActionRowLayout();
-        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()));
-        }
-
-        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 = !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 6b5676c..70df647 100644
--- a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java
@@ -30,7 +30,6 @@
 
 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 @@
     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 @@
             @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;
     }
 
diff --git a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java
index a849ddb..00a11e3 100644
--- a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java
@@ -35,7 +35,6 @@
 
 import com.android.intentresolver.ImageLoader;
 import com.android.intentresolver.R;
-import com.android.intentresolver.flags.FeatureFlagRepository;
 import com.android.intentresolver.widget.ActionRow;
 import com.android.intentresolver.widget.ImagePreviewView.TransitionElementStatusCallback;
 import com.android.intentresolver.widget.ScrollableImagePreviewView;
@@ -53,7 +52,6 @@
     private final ImageLoader mImageLoader;
     private final MimeTypeClassifier mTypeClassifier;
     private final TransitionElementStatusCallback mTransitionElementStatusCallback;
-    private final FeatureFlagRepository mFeatureFlagRepository;
     private final HeadlineGenerator mHeadlineGenerator;
 
     UnifiedContentPreviewUi(
@@ -63,7 +61,6 @@
             ImageLoader imageLoader,
             MimeTypeClassifier typeClassifier,
             TransitionElementStatusCallback transitionElementStatusCallback,
-            FeatureFlagRepository featureFlagRepository,
             HeadlineGenerator headlineGenerator) {
         mFiles = files;
         mText = text;
@@ -71,7 +68,6 @@
         mImageLoader = imageLoader;
         mTypeClassifier = typeClassifier;
         mTransitionElementStatusCallback = transitionElementStatusCallback;
-        mFeatureFlagRepository = featureFlagRepository;
         mHeadlineGenerator = headlineGenerator;
 
         mImageLoader.prePopulate(mFiles.stream()
diff --git a/java/src/com/android/intentresolver/flags/Flags.kt b/java/src/com/android/intentresolver/flags/Flags.kt
index 0440b3d..b303dd1 100644
--- a/java/src/com/android/intentresolver/flags/Flags.kt
+++ b/java/src/com/android/intentresolver/flags/Flags.kt
@@ -21,15 +21,8 @@
 
 // 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_SCROLLABLE_IMAGE_PREVIEW_NAME = "sharesheet_scrollable_image_preview"
-
-    // 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 6273296..0000000
--- 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/UnbundledChooserActivityTest.java b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
index d074e97..eb34022 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.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,8 +167,7 @@
             };
 
     private static final List<BooleanFlag> ALL_FLAGS =
-            Arrays.asList(
-                    Flags.SHARESHEET_SCROLLABLE_IMAGE_PREVIEW);
+            Arrays.asList();
 
     private static final Map<BooleanFlag, Boolean> ALL_FLAGS_OFF =
             createAllFlagsOverride(false);
@@ -178,6 +176,15 @@
 
     @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},
@@ -933,74 +940,6 @@
     }
 
     @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);
diff --git a/java/tests/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt b/java/tests/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUiTest.kt
index 82bf94c..7b9a0ce 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.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 @@
         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 @@
             imageLoader,
             actionFactory,
             transitionCallback,
-            featureFlagRepository,
             headlineGenerator
         )
         assertThat(testSubject.preferredContentPreview)
@@ -98,7 +90,6 @@
             imageLoader,
             actionFactory,
             transitionCallback,
-            featureFlagRepository,
             headlineGenerator
         )
         assertThat(testSubject.preferredContentPreview)
@@ -120,7 +111,6 @@
             imageLoader,
             actionFactory,
             transitionCallback,
-            featureFlagRepository,
             headlineGenerator
         )
         assertThat(testSubject.preferredContentPreview)
@@ -142,7 +132,6 @@
             imageLoader,
             actionFactory,
             transitionCallback,
-            featureFlagRepository,
             headlineGenerator
         )
         assertThat(testSubject.preferredContentPreview)
@@ -165,7 +154,6 @@
                 imageLoader,
                 actionFactory,
                 transitionCallback,
-                featureFlagRepository,
                 headlineGenerator
         )
         assertThat(testSubject.preferredContentPreview)
@@ -191,7 +179,6 @@
                 imageLoader,
                 actionFactory,
                 transitionCallback,
-                featureFlagRepository,
                 headlineGenerator
         )
         assertThat(testSubject.preferredContentPreview)
@@ -215,7 +202,6 @@
                 imageLoader,
                 actionFactory,
                 transitionCallback,
-                featureFlagRepository,
                 headlineGenerator
         )
         assertThat(testSubject.preferredContentPreview)
@@ -245,7 +231,6 @@
             imageLoader,
             actionFactory,
             transitionCallback,
-            featureFlagRepository,
             headlineGenerator
         )
         assertThat(testSubject.preferredContentPreview)
@@ -275,7 +260,6 @@
             imageLoader,
             actionFactory,
             transitionCallback,
-            featureFlagRepository,
             headlineGenerator
         )
         assertThat(testSubject.preferredContentPreview)
@@ -307,7 +291,6 @@
                 imageLoader,
                 actionFactory,
                 transitionCallback,
-                featureFlagRepository,
                 headlineGenerator
         )
         assertThat(testSubject.preferredContentPreview)
@@ -337,7 +320,6 @@
                 imageLoader,
                 actionFactory,
                 transitionCallback,
-                featureFlagRepository,
                 headlineGenerator
         )
         assertThat(testSubject.preferredContentPreview)