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
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user