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
// the reference used to locate the target window (below).
withWindowAttached(() -> {
mScrollCaptureClient.setHostWindowToken(mWindow.getDecorView().getWindowToken());
if (mLastScrollCaptureRequest != null) {
mLastScrollCaptureRequest.cancel(true);
}
mLastScrollCaptureRequest = mScrollCaptureClient.request(DEFAULT_DISPLAY);
mLastScrollCaptureRequest.addListener(() ->
onScrollCaptureResponseReady(mLastScrollCaptureRequest), mMainExecutor);
requestScrollCapture();
mWindow.peekDecorView().getViewRootImpl().setActivityConfigCallback(
(overrideConfig, newDisplayId) -> {
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();
}
});
@@ -593,6 +592,16 @@ public class ScreenshotController {
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) {
try {
if (mLastScrollCaptureResponse != null) {

View File

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