Merge "Request scroll capture when the screen rotates." into sc-dev

This commit is contained in:
Matt Casey
2021-06-09 13:16:39 +00:00
committed by Android (Google) Code Review
2 changed files with 20 additions and 7 deletions

View File

@@ -554,16 +554,15 @@ public class ScreenshotController {
// Wait until this window is attached to request because it is // Wait until this window is attached to request because it is
// the reference used to locate the target window (below). // the reference used to locate the target window (below).
withWindowAttached(() -> { withWindowAttached(() -> {
mScrollCaptureClient.setHostWindowToken(mWindow.getDecorView().getWindowToken()); requestScrollCapture();
if (mLastScrollCaptureRequest != null) {
mLastScrollCaptureRequest.cancel(true);
}
mLastScrollCaptureRequest = mScrollCaptureClient.request(DEFAULT_DISPLAY);
mLastScrollCaptureRequest.addListener(() ->
onScrollCaptureResponseReady(mLastScrollCaptureRequest), mMainExecutor);
mWindow.peekDecorView().getViewRootImpl().setActivityConfigCallback( mWindow.peekDecorView().getViewRootImpl().setActivityConfigCallback(
(overrideConfig, newDisplayId) -> { (overrideConfig, newDisplayId) -> {
if (mConfigChanges.applyNewConfig(mContext.getResources())) { if (mConfigChanges.applyNewConfig(mContext.getResources())) {
// Hide the scroll chip until we know it's available in this orientation
mScreenshotView.hideScrollChip();
// Delay scroll capture eval a bit to allow the underlying activity
// to set up in the new orientation.
mScreenshotHandler.postDelayed(this::requestScrollCapture, 150);
updateDisplayCutout(); updateDisplayCutout();
} }
}); });
@@ -593,6 +592,16 @@ public class ScreenshotController {
cancelTimeout(); // restarted after animation cancelTimeout(); // restarted after animation
} }
private void requestScrollCapture() {
mScrollCaptureClient.setHostWindowToken(mWindow.getDecorView().getWindowToken());
if (mLastScrollCaptureRequest != null) {
mLastScrollCaptureRequest.cancel(true);
}
mLastScrollCaptureRequest = mScrollCaptureClient.request(DEFAULT_DISPLAY);
mLastScrollCaptureRequest.addListener(() ->
onScrollCaptureResponseReady(mLastScrollCaptureRequest), mMainExecutor);
}
private void onScrollCaptureResponseReady(Future<ScrollCaptureResponse> responseFuture) { private void onScrollCaptureResponseReady(Future<ScrollCaptureResponse> responseFuture) {
try { try {
if (mLastScrollCaptureResponse != null) { if (mLastScrollCaptureResponse != null) {

View File

@@ -204,6 +204,10 @@ public class ScreenshotView extends FrameLayout implements
mSwipeDismissHandler = new SwipeDismissHandler(); mSwipeDismissHandler = new SwipeDismissHandler();
} }
public void hideScrollChip() {
mScrollChip.setVisibility(View.GONE);
}
/** /**
* Called to display the scroll action chip when support is detected. * Called to display the scroll action chip when support is detected.
* *