From 84f80d152d681d393aa81374ddfd5ad24c59e608 Mon Sep 17 00:00:00 2001 From: Mark Renouf Date: Thu, 8 Jul 2021 12:43:06 -0400 Subject: Quiet down long screenshots logcat output With this change, a long screen shot flow generates only the following log entries: D Screenshot: ScrollCapture: connected to window [com.example/.ExampleActivity] D Screenshot: onCaptureStarted D Screenshot: end() I Screenshot: Completed: LongScreenshot{w=1080, h=5339} Tags covered: LongScreenshotActivity Screenshot ScrollCaptureConnection ScrollCaptureInternal ScrollCaptureViewSupport ScrollCaptureController ViewRenderer Bug: 190399332 Test: observe logcat during long screenshot Change-Id: Ia2b018224897ad1ca153967ff9f60340a64f4815 --- .../internal/view/RecyclerViewCaptureHelper.java | 27 +------- .../internal/view/ScrollCaptureInternal.java | 2 +- .../android/systemui/screenshot/ImageTileSet.java | 2 - .../screenshot/LongScreenshotActivity.java | 23 +------ .../screenshot/ScrollCaptureController.java | 71 ++++++++++++++-------- 5 files changed, 53 insertions(+), 72 deletions(-) diff --git a/core/java/com/android/internal/view/RecyclerViewCaptureHelper.java b/core/java/com/android/internal/view/RecyclerViewCaptureHelper.java index 848a5ba77317..d14adf6f3c20 100644 --- a/core/java/com/android/internal/view/RecyclerViewCaptureHelper.java +++ b/core/java/com/android/internal/view/RecyclerViewCaptureHelper.java @@ -16,11 +16,6 @@ package com.android.internal.view; -import static com.android.internal.view.ScrollCaptureViewSupport.computeScrollAmount; -import static com.android.internal.view.ScrollCaptureViewSupport.findScrollingReferenceView; -import static com.android.internal.view.ScrollCaptureViewSupport.transformFromContainerToRequest; -import static com.android.internal.view.ScrollCaptureViewSupport.transformFromRequestToContainer; - import android.annotation.NonNull; import android.graphics.Rect; import android.util.Log; @@ -43,6 +38,7 @@ import android.view.ViewParent; */ public class RecyclerViewCaptureHelper implements ScrollCaptureViewHelper { private static final String TAG = "RVCaptureHelper"; + private int mScrollDelta; private boolean mScrollBarWasEnabled; private int mOverScrollMode; @@ -66,7 +62,6 @@ public class RecyclerViewCaptureHelper implements ScrollCaptureViewHelper run(ScrollCaptureResponse response) { - Log.d(TAG, "run: " + response); return CallbackToFutureAdapter.getFuture(completer -> { - Log.d(TAG, "getFuture(ImageTileSet) "); mCaptureCompleter = completer; mBgExecutor.execute(() -> { - Log.d(TAG, "bgExecutor.execute"); float maxPages = Settings.Secure.getFloat(mContext.getContentResolver(), SETTING_KEY_MAX_PAGES, MAX_PAGES_DEFAULT); - Log.d(TAG, "client start, maxPages=" + maxPages); mSessionFuture = mClient.start(response, maxPages); mSessionFuture.addListener(this::onStartComplete, mContext.getMainExecutor()); }); @@ -172,21 +170,27 @@ public class ScrollCaptureController { private void onStartComplete() { try { mSession = mSessionFuture.get(); - Log.d(TAG, "got session " + mSession); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "got session " + mSession); + } requestNextTile(0); } catch (InterruptedException | ExecutionException e) { // Failure to start, propagate to caller - Log.d(TAG, "session start failed!"); + Log.e(TAG, "session start failed!"); mCaptureCompleter.setException(e); } } private void requestNextTile(int topPx) { - Log.d(TAG, "requestNextTile: " + topPx); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "requestNextTile: " + topPx); + } mTileFuture = mSession.requestTile(topPx); mTileFuture.addListener(() -> { try { - Log.d(TAG, "onCaptureResult"); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "onCaptureResult"); + } onCaptureResult(mTileFuture.get()); } catch (InterruptedException | ExecutionException e) { Log.e(TAG, "requestTile failed!", e); @@ -196,14 +200,18 @@ public class ScrollCaptureController { } private void onCaptureResult(CaptureResult result) { - Log.d(TAG, "onCaptureResult: " + result + " scrolling " + (mScrollingUp ? "UP" : "DOWN") - + " finish on boundary: " + mFinishOnBoundary); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "onCaptureResult: " + result + " scrolling " + (mScrollingUp ? "UP" : "DOWN") + + " finish on boundary: " + mFinishOnBoundary); + } boolean emptyResult = result.captured.height() == 0; if (emptyResult) { // Potentially reached a vertical boundary. Extend in the other direction. if (mFinishOnBoundary) { - Log.d(TAG, "Empty: finished!"); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "Empty: finished!"); + } finishCapture(); return; } else { @@ -212,13 +220,17 @@ public class ScrollCaptureController { mImageTileSet.clear(); mFinishOnBoundary = true; mScrollingUp = !mScrollingUp; - Log.d(TAG, "Empty: cleared, switch direction to finish"); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "Empty: cleared, switch direction to finish"); + } } } else { // Got a non-empty result, but may already have enough bitmap data now int expectedTiles = mImageTileSet.size() + 1; if (expectedTiles >= mSession.getMaxTiles()) { - Log.d(TAG, "Hit max tiles: finished"); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "Hit max tiles: finished"); + } // If we ever hit the max tiles, we've got enough bitmap data to finish // (even if we weren't sure we'd finish on this pass). finishCapture(); @@ -229,7 +241,9 @@ public class ScrollCaptureController { // by IDEAL_PORTION_ABOVE. if (mImageTileSet.getHeight() + result.captured.height() >= mSession.getTargetHeight() * IDEAL_PORTION_ABOVE) { - Log.d(TAG, "Hit ideal portion above: clear and switch direction"); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "Hit ideal portion above: clear and switch direction"); + } // We got enough above the start point, now see how far down it can go. mImageTileSet.clear(); mScrollingUp = false; @@ -241,20 +255,25 @@ public class ScrollCaptureController { if (!emptyResult) { mImageTileSet.addTile(new ImageTile(result.image, result.captured)); } - - Log.d(TAG, "bounds: " + mImageTileSet.getLeft() + "," + mImageTileSet.getTop() - + " - " + mImageTileSet.getRight() + "," + mImageTileSet.getBottom() - + " (" + mImageTileSet.getWidth() + "x" + mImageTileSet.getHeight() + ")"); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "bounds: " + mImageTileSet.getLeft() + "," + mImageTileSet.getTop() + + " - " + mImageTileSet.getRight() + "," + mImageTileSet.getBottom() + + " (" + mImageTileSet.getWidth() + "x" + mImageTileSet.getHeight() + ")"); + } Rect gapBounds = mImageTileSet.getGaps(); if (!gapBounds.isEmpty()) { - Log.d(TAG, "Found gaps in tileset: " + gapBounds + ", requesting " + gapBounds.top); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "Found gaps in tileset: " + gapBounds + ", requesting " + gapBounds.top); + } requestNextTile(gapBounds.top); return; } if (mImageTileSet.getHeight() >= mSession.getTargetHeight()) { - Log.d(TAG, "Target height reached."); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "Target height reached."); + } finishCapture(); return; } @@ -275,10 +294,14 @@ public class ScrollCaptureController { } private void finishCapture() { - Log.d(TAG, "finishCapture()"); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "finishCapture()"); + } mEndFuture = mSession.end(); mEndFuture.addListener(() -> { - Log.d(TAG, "endCapture completed"); + if (LogConfig.DEBUG_SCROLL) { + Log.d(TAG, "endCapture completed"); + } // Provide result to caller and complete the top-level future // Caller is responsible for releasing this resource (ImageReader/HardwareBuffers) mCaptureCompleter.set(new LongScreenshot(mSession, mImageTileSet)); -- cgit v1.2.3-59-g8ed1b