Restore non-scrolling UI on long screenshots crash
If the long screenshot capture process crashes, or the returned long screenshot is of height zero, just restore the regular UI (without the scroll button) and reset the timeout. Bug: 189331695 Fix: 189331695 Test: manual Change-Id: Icb9bc230a7151726865715722de0b670f8bf6ffb
This commit is contained in:
@@ -662,12 +662,19 @@ public class ScreenshotController {
|
||||
mScrollCaptureController.run(response);
|
||||
future.addListener(() -> {
|
||||
ScrollCaptureController.LongScreenshot longScreenshot;
|
||||
|
||||
try {
|
||||
longScreenshot = future.get();
|
||||
} catch (CancellationException
|
||||
| InterruptedException
|
||||
| ExecutionException e) {
|
||||
Log.e(TAG, "Exception", e);
|
||||
mScreenshotView.restoreNonScrollingUi();
|
||||
return;
|
||||
}
|
||||
|
||||
if (longScreenshot.getHeight() == 0) {
|
||||
mScreenshotView.restoreNonScrollingUi();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -851,6 +851,23 @@ public class ScreenshotView extends FrameLayout implements
|
||||
anim.start();
|
||||
}
|
||||
|
||||
void restoreNonScrollingUi() {
|
||||
mScrollChip.setVisibility(View.GONE);
|
||||
mScrollablePreview.setVisibility(View.GONE);
|
||||
mScrollingScrim.setVisibility(View.GONE);
|
||||
|
||||
if (mAccessibilityManager.isEnabled()) {
|
||||
mDismissButton.setVisibility(View.VISIBLE);
|
||||
}
|
||||
mActionsContainer.setVisibility(View.VISIBLE);
|
||||
mBackgroundProtection.setVisibility(View.VISIBLE);
|
||||
mActionsContainerBackground.setVisibility(View.VISIBLE);
|
||||
mScreenshotPreviewBorder.setVisibility(View.VISIBLE);
|
||||
mScreenshotPreview.setVisibility(View.VISIBLE);
|
||||
// reset the timeout
|
||||
mCallbacks.onUserInteraction();
|
||||
}
|
||||
|
||||
boolean isDismissing() {
|
||||
return (mDismissAnimation != null && mDismissAnimation.isRunning());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user