Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 44654844 authored by Alison Cichowlas's avatar Alison Cichowlas
Browse files

Fix handling of bad image previews.

When the image preview fails (eg for permissions or timeout) the entire
system area is removed. This prevents the user from using Nearby.

Instead, when the image preview fails, we should hide only the image
preview and leave the rest of the system area intact.

Bug: 168557188
Test: ChooserActivityTest; manual inspection
Change-Id: I49190c1fbc4e25b3d2e2802a90de355bff297f7e
Merged-In: I49190c1fbc4e25b3d2e2802a90de355bff297f7e
parent e6821587
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -951,7 +951,7 @@ public class ChooserActivity extends ResolverActivity implements
        updateStickyContentPreview();
        if (shouldShowStickyContentPreview()
                || mChooserMultiProfilePagerAdapter
                        .getCurrentRootAdapter().getContentPreviewRowCount() != 0) {
                        .getCurrentRootAdapter().getSystemRowCount() != 0) {
            logActionShareWithPreview();
        }
        return postRebuildListInternal(rebuildCompleted);
@@ -1316,13 +1316,14 @@ public class ChooserActivity extends ResolverActivity implements
            ViewGroup parent) {
        ViewGroup contentPreviewLayout = (ViewGroup) layoutInflater.inflate(
                R.layout.chooser_grid_preview_image, parent, false);
        ViewGroup imagePreview = contentPreviewLayout.findViewById(R.id.content_preview_image_area);

        final ViewGroup actionRow =
                (ViewGroup) contentPreviewLayout.findViewById(R.id.chooser_action_row);
        //TODO: addActionButton(actionRow, createCopyButton());
        addActionButton(actionRow, createNearbyButton(targetIntent));

        mPreviewCoord = new ContentPreviewCoordinator(contentPreviewLayout, true);
        mPreviewCoord = new ContentPreviewCoordinator(contentPreviewLayout, false);

        String action = targetIntent.getAction();
        if (Intent.ACTION_SEND.equals(action)) {
@@ -1342,7 +1343,7 @@ public class ChooserActivity extends ResolverActivity implements
            if (imageUris.size() == 0) {
                Log.i(TAG, "Attempted to display image preview area with zero"
                        + " available images detected in EXTRA_STREAM list");
                contentPreviewLayout.setVisibility(View.GONE);
                imagePreview.setVisibility(View.GONE);
                return contentPreviewLayout;
            }

@@ -2680,7 +2681,7 @@ public class ChooserActivity extends ResolverActivity implements
                final int bottomInset = mSystemWindowInsets != null
                                            ? mSystemWindowInsets.bottom : 0;
                int offset = bottomInset;
                int rowsToShow = gridAdapter.getContentPreviewRowCount()
                int rowsToShow = gridAdapter.getSystemRowCount()
                        + gridAdapter.getProfileRowCount()
                        + gridAdapter.getServiceTargetRowCount()
                        + gridAdapter.getCallerAndRankedTargetRowCount();
@@ -3273,7 +3274,7 @@ public class ChooserActivity extends ResolverActivity implements

        public int getRowCount() {
            return (int) (
                    getContentPreviewRowCount()
                    getSystemRowCount()
                            + getProfileRowCount()
                            + getServiceTargetRowCount()
                            + getCallerAndRankedTargetRowCount()
@@ -3289,7 +3290,7 @@ public class ChooserActivity extends ResolverActivity implements
         * content preview. Not to be confused with the sticky content preview which is above the
         * personal and work tabs.
         */
        public int getContentPreviewRowCount() {
        public int getSystemRowCount() {
            // For the tabbed case we show the sticky content preview above the tabs,
            // please refer to shouldShowStickyContentPreview
            if (shouldShowTabs()) {
@@ -3299,8 +3300,7 @@ public class ChooserActivity extends ResolverActivity implements
                return 0;
            }

            if (mHideContentPreview || mChooserListAdapter == null
                    || mChooserListAdapter.getCount() == 0) {
            if (mChooserListAdapter == null || mChooserListAdapter.getCount() == 0) {
                return 0;
            }

@@ -3342,7 +3342,7 @@ public class ChooserActivity extends ResolverActivity implements
        @Override
        public int getItemCount() {
            return (int) (
                    getContentPreviewRowCount()
                    getSystemRowCount()
                            + getProfileRowCount()
                            + getServiceTargetRowCount()
                            + getCallerAndRankedTargetRowCount()
@@ -3397,7 +3397,7 @@ public class ChooserActivity extends ResolverActivity implements
        public int getItemViewType(int position) {
            int count;

            int countSum = (count = getContentPreviewRowCount());
            int countSum = (count = getSystemRowCount());
            if (count > 0 && position < countSum) return VIEW_TYPE_CONTENT_PREVIEW;

            countSum += (count = getProfileRowCount());
@@ -3621,7 +3621,7 @@ public class ChooserActivity extends ResolverActivity implements
        }

        int getListPosition(int position) {
            position -= getContentPreviewRowCount() + getProfileRowCount();
            position -= getSystemRowCount() + getProfileRowCount();

            final int serviceCount = mChooserListAdapter.getServiceTargetCount();
            final int serviceRows = (int) Math.ceil((float) serviceCount