summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/boot-image-profile.txt4
-rw-r--r--core/java/android/view/IScrollCaptureCallbacks.aidl (renamed from core/java/android/view/IScrollCaptureController.aidl)21
-rw-r--r--core/java/android/view/IScrollCaptureConnection.aidl (renamed from core/java/android/view/IScrollCaptureClient.aidl)2
-rw-r--r--core/java/android/view/IWindow.aidl6
-rw-r--r--core/java/android/view/IWindowManager.aidl8
-rw-r--r--core/java/android/view/ScrollCaptureCallback.java12
-rw-r--r--core/java/android/view/ScrollCaptureConnection.java (renamed from core/java/android/view/ScrollCaptureClient.java)46
-rw-r--r--core/java/android/view/ScrollCaptureSession.java12
-rw-r--r--core/java/android/view/ScrollCaptureTargetResolver.java69
-rw-r--r--core/java/android/view/ViewRootImpl.java52
-rw-r--r--core/java/android/view/Window.java11
-rw-r--r--core/java/com/android/internal/policy/PhoneWindow.java12
-rw-r--r--core/java/com/android/internal/view/BaseIWindow.java6
-rw-r--r--core/tests/coretests/src/android/view/ScrollCaptureConnectionTest.java (renamed from core/tests/coretests/src/android/view/ScrollCaptureClientTest.java)97
-rw-r--r--libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java6
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/screenshot/ScrollCaptureTest.java17
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java18
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/TestIWindow.java4
18 files changed, 178 insertions, 225 deletions
diff --git a/config/boot-image-profile.txt b/config/boot-image-profile.txt
index f43bd2bd61b9..01272c7966ac 100644
--- a/config/boot-image-profile.txt
+++ b/config/boot-image-profile.txt
@@ -47131,8 +47131,8 @@ Landroid/view/IRemoteAnimationRunner;
Landroid/view/IRotationWatcher$Stub$Proxy;
Landroid/view/IRotationWatcher$Stub;
Landroid/view/IRotationWatcher;
-Landroid/view/IScrollCaptureController$Stub;
-Landroid/view/IScrollCaptureController;
+Landroid/view/IScrollCaptureCallbacks$Stub;
+Landroid/view/IScrollCaptureCallbacks;
Landroid/view/ISystemGestureExclusionListener$Stub$Proxy;
Landroid/view/ISystemGestureExclusionListener$Stub;
Landroid/view/ISystemGestureExclusionListener;
diff --git a/core/java/android/view/IScrollCaptureController.aidl b/core/java/android/view/IScrollCaptureCallbacks.aidl
index 8474a00b302f..d97e3c66cc5d 100644
--- a/core/java/android/view/IScrollCaptureController.aidl
+++ b/core/java/android/view/IScrollCaptureCallbacks.aidl
@@ -20,32 +20,31 @@ import android.graphics.Point;
import android.graphics.Rect;
import android.view.Surface;
-import android.view.IScrollCaptureClient;
+import android.view.IScrollCaptureConnection;
/**
- * Interface to a controller passed to the {@link IScrollCaptureClient} which provides the client an
- * asynchronous callback channel for responses.
+ * Asynchronous callback channel for responses to scroll capture requests.
*
* {@hide}
*/
-interface IScrollCaptureController {
+interface IScrollCaptureCallbacks {
/**
- * Scroll capture is available, and a client connect has been returned.
+ * Scroll capture is available, and a connection has been provided.
*
- * @param client interface to a ScrollCaptureCallback in the window process
+ * @param connection a connection to a window process and scrollable content
* @param scrollAreaInWindow the location of scrolling in global (window) coordinate space
*/
- oneway void onClientConnected(in IScrollCaptureClient client, in Rect scrollBounds,
+ oneway void onConnected(in IScrollCaptureConnection connection, in Rect scrollBounds,
in Point positionInWindow);
/**
- * Nothing in the window can be scrolled, scroll capture not offered.
+ * The window does not support scroll capture.
*/
- oneway void onClientUnavailable();
+ oneway void onUnavailable();
/**
- * Notifies the system that the client has confirmed the request and is ready to begin providing
- * image requests.
+ * Called when the remote end has confirmed the request and is ready to begin providing image
+ * requests.
*/
oneway void onCaptureStarted();
diff --git a/core/java/android/view/IScrollCaptureClient.aidl b/core/java/android/view/IScrollCaptureConnection.aidl
index 5f135a37dfef..63a4f48aeb20 100644
--- a/core/java/android/view/IScrollCaptureClient.aidl
+++ b/core/java/android/view/IScrollCaptureConnection.aidl
@@ -26,7 +26,7 @@ import android.view.Surface;
*
* {@hide}
*/
-interface IScrollCaptureClient {
+interface IScrollCaptureConnection {
/**
* Informs the client that it has been selected for scroll capture and should prepare to
diff --git a/core/java/android/view/IWindow.aidl b/core/java/android/view/IWindow.aidl
index 193e674dd1b0..e685b30421be 100644
--- a/core/java/android/view/IWindow.aidl
+++ b/core/java/android/view/IWindow.aidl
@@ -26,7 +26,7 @@ import android.view.DisplayCutout;
import android.view.DragEvent;
import android.view.InsetsSourceControl;
import android.view.InsetsState;
-import android.view.IScrollCaptureController;
+import android.view.IScrollCaptureCallbacks;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.window.ClientWindowFrames;
@@ -137,7 +137,7 @@ oneway interface IWindow {
/**
* Called when Scroll Capture support is requested for a window.
*
- * @param controller the controller to receive responses
+ * @param callbacks to receive responses
*/
- void requestScrollCapture(in IScrollCaptureController controller);
+ void requestScrollCapture(in IScrollCaptureCallbacks callbacks);
}
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index c460f74e7460..3c5d336b840d 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -42,7 +42,7 @@ import android.view.IDisplayFoldListener;
import android.view.IDisplayWindowRotationController;
import android.view.IOnKeyguardExitResult;
import android.view.IPinnedStackListener;
-import android.view.IScrollCaptureController;
+import android.view.IScrollCaptureCallbacks;
import android.view.RemoteAnimationAdapter;
import android.view.IRotationWatcher;
import android.view.ISystemGestureExclusionListener;
@@ -751,12 +751,10 @@ interface IWindowManager
* @param behindClient token for a window, used to filter the search to windows behind it, or
* {@code null} to accept a window at any zOrder
* @param taskId specifies the id of a task the result must belong to, or -1 to ignore task ids
- * @param controller the controller to receive results, a call to either
- * {@link IScrollCaptureController#onClientConnected} or
- * {@link IScrollCaptureController#onClientUnavailable}.
+ * @param callbacks the object to receive replies
*/
void requestScrollCapture(int displayId, IBinder behindClient, int taskId,
- IScrollCaptureController controller);
+ IScrollCaptureCallbacks callbacks);
/**
* Holds the WM lock for the specified amount of milliseconds.
diff --git a/core/java/android/view/ScrollCaptureCallback.java b/core/java/android/view/ScrollCaptureCallback.java
index e1a4e7443600..d3aad2c72d27 100644
--- a/core/java/android/view/ScrollCaptureCallback.java
+++ b/core/java/android/view/ScrollCaptureCallback.java
@@ -29,8 +29,8 @@ import java.util.function.Consumer;
* callbacks registered within the window.
* <p>
* A callback is assigned to a View using {@link View#setScrollCaptureCallback}, or to the window as
- * {@link Window#addScrollCaptureCallback}. The point where the callback is registered defines the
- * frame of reference for the bounds measurements used.
+ * {@link Window#registerScrollCaptureCallback}. The point where the callback is registered defines
+ * the frame of reference for the bounds measurements used.
* <p>
* <b>Terminology</b>
* <dl>
@@ -39,9 +39,9 @@ import java.util.function.Consumer;
* is assigned directly to a window.</dd>
*
* <dt>Scroll Bounds</dt>
- * <dd>A rectangle which describes an area within the containing view where scrolling content may
- * be positioned. This may be the Containing View bounds itself, or any rectangle within.
- * Requested by {@link #onScrollCaptureSearch}.</dd>
+ * <dd>A rectangle which describes an area within the containing view where scrolling content
+ * appears. This may be the entire view or any rectangle within. This defines a frame of reference
+ * for requests as well as the width and maximum height of a single request.</dd>
*
* <dt>Scroll Delta</dt>
* <dd>The distance the scroll position has moved since capture started. Implementations are
@@ -57,7 +57,7 @@ import java.util.function.Consumer;
*
* @see View#setScrollCaptureHint(int)
* @see View#setScrollCaptureCallback(ScrollCaptureCallback)
- * @see Window#addScrollCaptureCallback(ScrollCaptureCallback)
+ * @see Window#registerScrollCaptureCallback(ScrollCaptureCallback)
*
* @hide
*/
diff --git a/core/java/android/view/ScrollCaptureClient.java b/core/java/android/view/ScrollCaptureConnection.java
index f163124f3a98..0e6cdd1dbec5 100644
--- a/core/java/android/view/ScrollCaptureClient.java
+++ b/core/java/android/view/ScrollCaptureConnection.java
@@ -19,7 +19,6 @@ package android.view;
import static java.util.Objects.requireNonNull;
import android.annotation.NonNull;
-import android.annotation.Nullable;
import android.annotation.UiThread;
import android.annotation.WorkerThread;
import android.graphics.Point;
@@ -33,15 +32,15 @@ import com.android.internal.annotations.VisibleForTesting;
import java.util.concurrent.atomic.AtomicBoolean;
/**
- * A client of the system providing Scroll Capture capability on behalf of a Window.
+ * Mediator between a selected scroll capture target view and a remote process.
* <p>
* An instance is created to wrap the selected {@link ScrollCaptureCallback}.
*
* @hide
*/
-public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
+public class ScrollCaptureConnection extends IScrollCaptureConnection.Stub {
- private static final String TAG = "ScrollCaptureClient";
+ private static final String TAG = "ScrollCaptureConnection";
private static final int DEFAULT_TIMEOUT = 1000;
private final Handler mHandler;
@@ -49,7 +48,7 @@ public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
private int mTimeoutMillis = DEFAULT_TIMEOUT;
protected Surface mSurface;
- private IScrollCaptureController mController;
+ private IScrollCaptureCallbacks mCallbacks;
private final Rect mScrollBounds;
private final Point mPositionInWindow;
@@ -62,18 +61,18 @@ public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
private DelayedAction mTimeoutAction;
/**
- * Constructs a ScrollCaptureClient.
+ * Constructs a ScrollCaptureConnection.
*
* @param selectedTarget the target the client is controlling
- * @param controller the callbacks to reply to system requests
+ * @param callbacks the callbacks to reply to system requests
*
* @hide
*/
- public ScrollCaptureClient(
+ public ScrollCaptureConnection(
@NonNull ScrollCaptureTarget selectedTarget,
- @NonNull IScrollCaptureController controller) {
+ @NonNull IScrollCaptureCallbacks callbacks) {
requireNonNull(selectedTarget, "<selectedTarget> must non-null");
- requireNonNull(controller, "<controller> must non-null");
+ requireNonNull(callbacks, "<callbacks> must non-null");
final Rect scrollBounds = requireNonNull(selectedTarget.getScrollBounds(),
"target.getScrollBounds() must be non-null to construct a client");
@@ -82,7 +81,7 @@ public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
mScrollBounds = new Rect(scrollBounds);
mPositionInWindow = new Point(selectedTarget.getPositionInWindow());
- mController = controller;
+ mCallbacks = callbacks;
mCloseGuard = new CloseGuard();
mCloseGuard.open("close");
@@ -106,14 +105,13 @@ public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
mTimeoutMillis = timeoutMillis;
}
- @Nullable
@VisibleForTesting
public DelayedAction getTimeoutAction() {
return mTimeoutAction;
}
private void checkConnected() {
- if (mSelectedTarget == null || mController == null) {
+ if (mSelectedTarget == null || mCallbacks == null) {
throw new IllegalStateException("This client has been disconnected.");
}
}
@@ -124,7 +122,7 @@ public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
}
}
- @WorkerThread // IScrollCaptureClient
+ @WorkerThread // IScrollCaptureConnection
@Override
public void startCapture(Surface surface) throws RemoteException {
checkConnected();
@@ -140,7 +138,7 @@ public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
if (cancelTimeout()) {
mHandler.post(() -> {
try {
- mController.onCaptureStarted();
+ mCallbacks.onCaptureStarted();
} catch (RemoteException e) {
doShutdown();
}
@@ -153,7 +151,7 @@ public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
endCapture();
}
- @WorkerThread // IScrollCaptureClient
+ @WorkerThread // IScrollCaptureConnection
@Override
public void requestImage(Rect requestRect) {
checkConnected();
@@ -170,7 +168,7 @@ public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
if (cancelTimeout()) {
mHandler.post(() -> {
try {
- mController.onCaptureBufferSent(frameNumber, finalCapturedArea);
+ mCallbacks.onCaptureBufferSent(frameNumber, finalCapturedArea);
} catch (RemoteException e) {
doShutdown();
}
@@ -183,7 +181,7 @@ public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
endCapture();
}
- @WorkerThread // IScrollCaptureClient
+ @WorkerThread // IScrollCaptureConnection
@Override
public void endCapture() {
if (isStarted()) {
@@ -196,7 +194,7 @@ public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
}
private boolean isStarted() {
- return mController != null && mSelectedTarget != null;
+ return mCallbacks != null && mSelectedTarget != null;
}
@UiThread
@@ -214,8 +212,8 @@ public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
private void doShutdown() {
try {
- if (mController != null) {
- mController.onConnectionClosed();
+ if (mCallbacks != null) {
+ mCallbacks.onConnectionClosed();
}
} catch (RemoteException e) {
// Ignore
@@ -235,15 +233,15 @@ public class ScrollCaptureClient extends IScrollCaptureClient.Stub {
}
mSelectedTarget = null;
- mController = null;
+ mCallbacks = null;
}
/** @return a string representation of the state of this client */
public String toString() {
- return "ScrollCaptureClient{"
+ return "ScrollCaptureConnection{"
+ ", session=" + mSession
+ ", selectedTarget=" + mSelectedTarget
- + ", clientCallbacks=" + mController
+ + ", clientCallbacks=" + mCallbacks
+ "}";
}
diff --git a/core/java/android/view/ScrollCaptureSession.java b/core/java/android/view/ScrollCaptureSession.java
index 628e23fb3f5e..92617a325265 100644
--- a/core/java/android/view/ScrollCaptureSession.java
+++ b/core/java/android/view/ScrollCaptureSession.java
@@ -36,15 +36,15 @@ public class ScrollCaptureSession {
private final Point mPositionInWindow;
@Nullable
- private ScrollCaptureClient mClient;
+ private ScrollCaptureConnection mConnection;
/** @hide */
public ScrollCaptureSession(Surface surface, Rect scrollBounds, Point positionInWindow,
- ScrollCaptureClient client) {
+ ScrollCaptureConnection connection) {
mSurface = surface;
mScrollBounds = scrollBounds;
mPositionInWindow = positionInWindow;
- mClient = client;
+ mConnection = connection;
}
/**
@@ -88,8 +88,8 @@ public class ScrollCaptureSession {
* @param capturedArea the area captured, relative to scroll bounds
*/
public void notifyBufferSent(long frameNumber, @NonNull Rect capturedArea) {
- if (mClient != null) {
- mClient.onRequestImageCompleted(frameNumber, capturedArea);
+ if (mConnection != null) {
+ mConnection.onRequestImageCompleted(frameNumber, capturedArea);
}
}
@@ -97,7 +97,7 @@ public class ScrollCaptureSession {
* @hide
*/
public void disconnect() {
- mClient = null;
+ mConnection = null;
if (mSurface.isValid()) {
mSurface.release();
}
diff --git a/core/java/android/view/ScrollCaptureTargetResolver.java b/core/java/android/view/ScrollCaptureTargetResolver.java
index 71e82c511e2c..5106534694a1 100644
--- a/core/java/android/view/ScrollCaptureTargetResolver.java
+++ b/core/java/android/view/ScrollCaptureTargetResolver.java
@@ -57,7 +57,6 @@ import java.util.function.Consumer;
@UiThread
public class ScrollCaptureTargetResolver {
private static final String TAG = "ScrollCaptureTargetRes";
- private static final boolean DEBUG = true;
private final Object mLock = new Object();
@@ -86,18 +85,11 @@ public class ScrollCaptureTargetResolver {
* Binary operator which selects the best {@link ScrollCaptureTarget}.
*/
private static ScrollCaptureTarget chooseTarget(ScrollCaptureTarget a, ScrollCaptureTarget b) {
- Log.d(TAG, "chooseTarget: " + a + " or " + b);
- // Nothing plus nothing is still nothing.
if (a == null && b == null) {
- Log.d(TAG, "chooseTarget: (both null) return " + null);
return null;
- }
- // Prefer non-null.
- if (a == null || b == null) {
+ } else if (a == null || b == null) {
ScrollCaptureTarget c = (a == null) ? b : a;
- Log.d(TAG, "chooseTarget: (other is null) return " + c);
return c;
-
}
boolean emptyScrollBoundsA = nullOrEmpty(a.getScrollBounds());
@@ -155,8 +147,7 @@ public class ScrollCaptureTargetResolver {
*
* @param targets a list of {@link ScrollCaptureTarget} as collected by {@link
* View#dispatchScrollCaptureSearch}.
- * @param uiHandler the UI thread handler for the view tree
- * @see #start(long, Consumer)
+ * @see #start(Handler, long, Consumer)
*/
public ScrollCaptureTargetResolver(Queue<ScrollCaptureTarget> targets) {
mTargets = targets;
@@ -184,7 +175,6 @@ public class ScrollCaptureTargetResolver {
return mResult;
}
-
private void supplyResult(ScrollCaptureTarget target) {
checkThread();
if (mFinished) {
@@ -232,12 +222,11 @@ public class ScrollCaptureTargetResolver {
return;
}
mStarted = true;
- uiHandler.post(() -> run(timeLimitMillis, resultConsumer));
+ uiHandler.post(this::run);
}
}
-
- private void run(long timeLimitMillis, Consumer<ScrollCaptureTarget> resultConsumer) {
+ private void run() {
checkThread();
mPendingBoundsRequests = mTargets.size();
@@ -248,15 +237,11 @@ public class ScrollCaptureTargetResolver {
mHandler.postAtTime(mTimeoutRunnable, mDeadlineMillis);
}
- private final Runnable mTimeoutRunnable = new Runnable() {
- @Override
- public void run() {
- checkThread();
- supplyResult(null);
- }
+ private final Runnable mTimeoutRunnable = () -> {
+ checkThread();
+ supplyResult(null);
};
-
/**
* Adds a target to the list and requests {@link ScrollCaptureCallback#onScrollCaptureSearch}
* scrollBounds} from it. Results are returned by a call to {@link #onScrollBoundsProvided}.
@@ -274,7 +259,6 @@ public class ScrollCaptureTargetResolver {
// Queue and consume on the UI thread
((scrollBounds) -> mHandler.post(
() -> onScrollBoundsProvided(target, scrollBounds)))));
-
}
@UiThread
@@ -300,14 +284,8 @@ public class ScrollCaptureTargetResolver {
supplyResult(target);
}
- System.err.println("mPendingBoundsRequests: " + mPendingBoundsRequests);
- System.err.println("mDeadlineMillis: " + mDeadlineMillis);
- System.err.println("SystemClock.elapsedRealtime(): " + SystemClock.elapsedRealtime());
-
if (!mFinished) {
// Reschedule the timeout.
- System.err.println(
- "We think we're NOT done yet and will check back at " + mDeadlineMillis);
mHandler.postAtTime(mTimeoutRunnable, mDeadlineMillis);
}
}
@@ -334,44 +312,17 @@ public class ScrollCaptureTargetResolver {
return otherParent == view;
}
- private static int findRelation(@NonNull View a, @NonNull View b) {
- if (a == b) {
- return 0;
- }
-
- ViewParent parentA = a.getParent();
- ViewParent parentB = b.getParent();
-
- while (parentA != null || parentB != null) {
- if (parentA == parentB) {
- return 0;
- }
- if (parentA == b) {
- return 1; // A is descendant of B
- }
- if (parentB == a) {
- return -1; // B is descendant of A
- }
- if (parentA != null) {
- parentA = parentA.getParent();
- }
- if (parentB != null) {
- parentB = parentB.getParent();
- }
- }
- return 0;
- }
-
/**
* A safe wrapper for a consumer callbacks intended to accept a single value. It ensures
* that the receiver of the consumer does not retain a reference to {@code target} after use nor
* cause race conditions by invoking {@link Consumer#accept accept} more than once.
- *
- * @param target the target consumer
*/
static class SingletonConsumer<T> implements Consumer<T> {
final AtomicReference<Consumer<T>> mAtomicRef;
+ /**
+ * @param target the target consumer
+ **/
SingletonConsumer(Consumer<T> target) {
mAtomicRef = new AtomicReference<>(target);
}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 80f5c0fb8257..f0203011b4f2 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -649,7 +649,7 @@ public final class ViewRootImpl implements ViewParent,
private final InsetsController mInsetsController;
private final ImeFocusController mImeFocusController;
- private ScrollCaptureClient mScrollCaptureClient;
+ private ScrollCaptureConnection mScrollCaptureConnection;
/**
* @return {@link ImeFocusController} for this instance.
@@ -659,10 +659,10 @@ public final class ViewRootImpl implements ViewParent,
return mImeFocusController;
}
- /** @return The current {@link ScrollCaptureClient} for this instance, if any is active. */
+ /** @return The current {@link ScrollCaptureConnection} for this instance, if any is active. */
@Nullable
- public ScrollCaptureClient getScrollCaptureClient() {
- return mScrollCaptureClient;
+ public ScrollCaptureConnection getScrollCaptureConnection() {
+ return mScrollCaptureConnection;
}
private final GestureExclusionTracker mGestureExclusionTracker = new GestureExclusionTracker();
@@ -5192,7 +5192,7 @@ public final class ViewRootImpl implements ViewParent,
updateLocationInParentDisplay(msg.arg1, msg.arg2);
} break;
case MSG_REQUEST_SCROLL_CAPTURE:
- handleScrollCaptureRequest((IScrollCaptureController) msg.obj);
+ handleScrollCaptureRequest((IScrollCaptureCallbacks) msg.obj);
break;
}
}
@@ -8979,10 +8979,10 @@ public final class ViewRootImpl implements ViewParent,
/**
* Dispatches a scroll capture request to the view hierarchy on the ui thread.
*
- * @param controller the controller to receive replies
+ * @param callbacks for replies
*/
- public void dispatchScrollCaptureRequest(@NonNull IScrollCaptureController controller) {
- mHandler.obtainMessage(MSG_REQUEST_SCROLL_CAPTURE, controller).sendToTarget();
+ public void dispatchScrollCaptureRequest(@NonNull IScrollCaptureCallbacks callbacks) {
+ mHandler.obtainMessage(MSG_REQUEST_SCROLL_CAPTURE, callbacks).sendToTarget();
}
/**
@@ -9007,14 +9007,14 @@ public final class ViewRootImpl implements ViewParent,
* Handles an inbound request for scroll capture from the system. If a client is not already
* active, a search will be dispatched through the view tree to locate scrolling content.
* <p>
- * Either {@link IScrollCaptureController#onClientConnected(IScrollCaptureClient, Rect,
- * Point)} or {@link IScrollCaptureController#onClientUnavailable()} will be returned
+ * Either {@link IScrollCaptureCallbacks#onClientConnected(IScrollCaptureConnection, Rect,
+ * Point)} or {@link IScrollCaptureCallbacks#onUnavailable()} will be returned
* depending on the results of the search.
*
- * @param controller the interface to the system controller
+ * @param callbacks to receive responses
* @see ScrollCaptureTargetResolver
*/
- private void handleScrollCaptureRequest(@NonNull IScrollCaptureController controller) {
+ private void handleScrollCaptureRequest(@NonNull IScrollCaptureCallbacks callbacks) {
LinkedList<ScrollCaptureTarget> targetList = new LinkedList<>();
// Window (root) level callbacks
@@ -9029,7 +9029,7 @@ public final class ViewRootImpl implements ViewParent,
// No-op path. Scroll capture not offered for this window.
if (targetList.isEmpty()) {
- dispatchScrollCaptureSearchResult(controller, null);
+ dispatchScrollCaptureSearchResult(callbacks, null);
return;
}
@@ -9037,12 +9037,12 @@ public final class ViewRootImpl implements ViewParent,
// Continues with the consumer once all responses are consumed, or the timeout expires.
ScrollCaptureTargetResolver resolver = new ScrollCaptureTargetResolver(targetList);
resolver.start(mHandler, 1000,
- (selected) -> dispatchScrollCaptureSearchResult(controller, selected));
+ (selected) -> dispatchScrollCaptureSearchResult(callbacks, selected));
}
/** Called by {@link #handleScrollCaptureRequest} when a result is returned */
private void dispatchScrollCaptureSearchResult(
- @NonNull IScrollCaptureController controller,
+ @NonNull IScrollCaptureCallbacks callbacks,
@Nullable ScrollCaptureTarget selectedTarget) {
// If timeout or no eligible targets found.
@@ -9051,31 +9051,31 @@ public final class ViewRootImpl implements ViewParent,
if (DEBUG_SCROLL_CAPTURE) {
Log.d(TAG, "scrollCaptureSearch returned no targets available.");
}
- controller.onClientUnavailable();
+ callbacks.onUnavailable();
} catch (RemoteException e) {
if (DEBUG_SCROLL_CAPTURE) {
- Log.w(TAG, "Failed to notify controller of scroll capture search result.", e);
+ Log.w(TAG, "Failed to send scroll capture search result.", e);
}
}
return;
}
// Create a client instance and return it to the caller
- mScrollCaptureClient = new ScrollCaptureClient(selectedTarget, controller);
+ mScrollCaptureConnection = new ScrollCaptureConnection(selectedTarget, callbacks);
try {
if (DEBUG_SCROLL_CAPTURE) {
- Log.d(TAG, "scrollCaptureSearch returning client: " + getScrollCaptureClient());
+ Log.d(TAG, "scrollCaptureSearch returning client: " + getScrollCaptureConnection());
}
- controller.onClientConnected(
- mScrollCaptureClient,
+ callbacks.onConnected(
+ mScrollCaptureConnection,
selectedTarget.getScrollBounds(),
selectedTarget.getPositionInWindow());
} catch (RemoteException e) {
if (DEBUG_SCROLL_CAPTURE) {
- Log.w(TAG, "Failed to notify controller of scroll capture search result.", e);
+ Log.w(TAG, "Failed to send scroll capture search result.", e);
}
- mScrollCaptureClient.disconnect();
- mScrollCaptureClient = null;
+ mScrollCaptureConnection.disconnect();
+ mScrollCaptureConnection = null;
}
}
@@ -9373,10 +9373,10 @@ public final class ViewRootImpl implements ViewParent,
}
@Override
- public void requestScrollCapture(IScrollCaptureController controller) {
+ public void requestScrollCapture(IScrollCaptureCallbacks callbacks) {
final ViewRootImpl viewAncestor = mViewAncestor.get();
if (viewAncestor != null) {
- viewAncestor.dispatchScrollCaptureRequest(controller);
+ viewAncestor.dispatchScrollCaptureRequest(callbacks);
}
}
}
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index 1dbf37aca689..5331a1b8d538 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -2560,19 +2560,20 @@ public abstract class Window {
/**
* System request to begin scroll capture.
*
- * @param controller the controller to receive responses
+ * @param callbacks to receive responses
* @hide
*/
- public void requestScrollCapture(IScrollCaptureController controller) {
+ public void requestScrollCapture(IScrollCaptureCallbacks callbacks) {
}
/**
- * Registers a {@link ScrollCaptureCallback} with the root of this window.
+ * Used to provide scroll capture support for an arbitrary window. This registeres the given
+ * callback with the root view of the window.
*
* @param callback the callback to add
* @hide
*/
- public void addScrollCaptureCallback(@NonNull ScrollCaptureCallback callback) {
+ public void registerScrollCaptureCallback(@NonNull ScrollCaptureCallback callback) {
}
/**
@@ -2581,7 +2582,7 @@ public abstract class Window {
* @param callback the callback to remove
* @hide
*/
- public void removeScrollCaptureCallback(@NonNull ScrollCaptureCallback callback) {
+ public void unregisterScrollCaptureCallback(@NonNull ScrollCaptureCallback callback) {
}
/** @hide */
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index 50eed27976ad..469c41e5efb9 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -77,7 +77,7 @@ import android.util.TypedValue;
import android.view.ContextThemeWrapper;
import android.view.Gravity;
import android.view.IRotationWatcher.Stub;
-import android.view.IScrollCaptureController;
+import android.view.IScrollCaptureCallbacks;
import android.view.IWindowManager;
import android.view.InputDevice;
import android.view.InputEvent;
@@ -3910,12 +3910,12 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
/**
* System request to begin scroll capture.
*
- * @param controller the controller to receive responses
+ * @param callbacks to receive responses
* @hide
*/
@Override
- public void requestScrollCapture(IScrollCaptureController controller) {
- getViewRootImpl().dispatchScrollCaptureRequest(controller);
+ public void requestScrollCapture(IScrollCaptureCallbacks callbacks) {
+ getViewRootImpl().dispatchScrollCaptureRequest(callbacks);
}
/**
@@ -3924,7 +3924,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
* @param callback the callback to add
*/
@Override
- public void addScrollCaptureCallback(@NonNull ScrollCaptureCallback callback) {
+ public void registerScrollCaptureCallback(@NonNull ScrollCaptureCallback callback) {
getViewRootImpl().addScrollCaptureCallback(callback);
}
@@ -3934,7 +3934,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
* @param callback the callback to remove
*/
@Override
- public void removeScrollCaptureCallback(@NonNull ScrollCaptureCallback callback) {
+ public void unregisterScrollCaptureCallback(@NonNull ScrollCaptureCallback callback) {
getViewRootImpl().removeScrollCaptureCallback(callback);
}
diff --git a/core/java/com/android/internal/view/BaseIWindow.java b/core/java/com/android/internal/view/BaseIWindow.java
index fff9ac9e49b7..8962dc3d59da 100644
--- a/core/java/com/android/internal/view/BaseIWindow.java
+++ b/core/java/com/android/internal/view/BaseIWindow.java
@@ -24,7 +24,7 @@ import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.util.MergedConfiguration;
import android.view.DragEvent;
-import android.view.IScrollCaptureController;
+import android.view.IScrollCaptureCallbacks;
import android.view.IWindow;
import android.view.IWindowSession;
import android.view.InsetsSourceControl;
@@ -162,9 +162,9 @@ public class BaseIWindow extends IWindow.Stub {
}
@Override
- public void requestScrollCapture(IScrollCaptureController controller) {
+ public void requestScrollCapture(IScrollCaptureCallbacks callbacks) {
try {
- controller.onClientUnavailable();
+ callbacks.onUnavailable();
} catch (RemoteException ex) {
// ignore
}
diff --git a/core/tests/coretests/src/android/view/ScrollCaptureClientTest.java b/core/tests/coretests/src/android/view/ScrollCaptureConnectionTest.java
index e6ac2d6c43da..b9cf1e4a234c 100644
--- a/core/tests/coretests/src/android/view/ScrollCaptureClientTest.java
+++ b/core/tests/coretests/src/android/view/ScrollCaptureConnectionTest.java
@@ -47,11 +47,11 @@ import org.mockito.MockitoAnnotations;
import org.mockito.stubbing.Answer;
/**
- * Tests of {@link ScrollCaptureClient}.
+ * Tests of {@link ScrollCaptureConnection}.
*/
@SuppressWarnings("UnnecessaryLocalVariable")
@RunWith(AndroidJUnit4.class)
-public class ScrollCaptureClientTest {
+public class ScrollCaptureConnectionTest {
private final Point mPositionInWindow = new Point(1, 2);
private final Rect mLocalVisibleRect = new Rect(2, 3, 4, 5);
@@ -63,7 +63,7 @@ public class ScrollCaptureClientTest {
@Mock
private Surface mSurface;
@Mock
- private IScrollCaptureController mClientCallbacks;
+ private IScrollCaptureCallbacks mConnectionCallbacks;
@Mock
private View mMockView1;
@Mock
@@ -86,8 +86,8 @@ public class ScrollCaptureClientTest {
@Test
public void testDelayedAction() {
Runnable action = Mockito.mock(Runnable.class);
- ScrollCaptureClient.DelayedAction delayed =
- new ScrollCaptureClient.DelayedAction(mHandler, 100, action);
+ ScrollCaptureConnection.DelayedAction delayed =
+ new ScrollCaptureConnection.DelayedAction(mHandler, 100, action);
try {
Thread.sleep(200);
} catch (InterruptedException ex) {
@@ -103,8 +103,8 @@ public class ScrollCaptureClientTest {
@Test
public void testDelayedAction_cancel() {
Runnable action = Mockito.mock(Runnable.class);
- ScrollCaptureClient.DelayedAction delayed =
- new ScrollCaptureClient.DelayedAction(mHandler, 100, action);
+ ScrollCaptureConnection.DelayedAction delayed =
+ new ScrollCaptureConnection.DelayedAction(mHandler, 100, action);
try {
Thread.sleep(50);
} catch (InterruptedException ex) {
@@ -125,8 +125,8 @@ public class ScrollCaptureClientTest {
@Test
public void testDelayedAction_timeoutNow() {
Runnable action = Mockito.mock(Runnable.class);
- ScrollCaptureClient.DelayedAction delayed =
- new ScrollCaptureClient.DelayedAction(mHandler, 100, action);
+ ScrollCaptureConnection.DelayedAction delayed =
+ new ScrollCaptureConnection.DelayedAction(mHandler, 100, action);
try {
Thread.sleep(50);
} catch (InterruptedException ex) {
@@ -141,7 +141,7 @@ public class ScrollCaptureClientTest {
/** Test creating a client with valid info */
@Test
public void testConstruction() {
- new ScrollCaptureClient(mTarget1, mClientCallbacks);
+ new ScrollCaptureConnection(mTarget1, mConnectionCallbacks);
}
/** Test creating a client fails if arguments are not valid. */
@@ -149,7 +149,7 @@ public class ScrollCaptureClientTest {
public void testConstruction_requiresScrollBounds() {
try {
mTarget1.setScrollBounds(null);
- new ScrollCaptureClient(mTarget1, mClientCallbacks);
+ new ScrollCaptureConnection(mTarget1, mConnectionCallbacks);
fail("An exception was expected.");
} catch (RuntimeException ex) {
// Ignore, expected.
@@ -174,48 +174,51 @@ public class ScrollCaptureClientTest {
};
}
- /** @see ScrollCaptureClient#startCapture(Surface) */
+ /** @see ScrollCaptureConnection#startCapture(Surface) */
@Test
public void testStartCapture() throws Exception {
- final ScrollCaptureClient client = new ScrollCaptureClient(mTarget1, mClientCallbacks);
+ final ScrollCaptureConnection connection = new ScrollCaptureConnection(mTarget1,
+ mConnectionCallbacks);
// Have the session start accepted immediately
doAnswer(runRunnable(1)).when(mCallback1)
.onScrollCaptureStart(any(ScrollCaptureSession.class), any(Runnable.class));
- client.startCapture(mSurface);
+ connection.startCapture(mSurface);
getInstrumentation().waitForIdleSync();
verify(mCallback1, times(1))
.onScrollCaptureStart(any(ScrollCaptureSession.class), any(Runnable.class));
- verify(mClientCallbacks, times(1)).onCaptureStarted();
- verifyNoMoreInteractions(mClientCallbacks);
+ verify(mConnectionCallbacks, times(1)).onCaptureStarted();
+ verifyNoMoreInteractions(mConnectionCallbacks);
}
@Test
public void testStartCaptureTimeout() throws Exception {
- final ScrollCaptureClient client = new ScrollCaptureClient(mTarget1, mClientCallbacks);
- client.startCapture(mSurface);
+ final ScrollCaptureConnection connection = new ScrollCaptureConnection(mTarget1,
+ mConnectionCallbacks);
+ connection.startCapture(mSurface);
// Force timeout to fire
- client.getTimeoutAction().timeoutNow();
+ connection.getTimeoutAction().timeoutNow();
getInstrumentation().waitForIdleSync();
verify(mCallback1, times(1)).onScrollCaptureEnd(any(Runnable.class));
}
- private void startClient(ScrollCaptureClient client) throws Exception {
+ private void startCapture(ScrollCaptureConnection connection) throws Exception {
doAnswer(runRunnable(1)).when(mCallback1)
.onScrollCaptureStart(any(ScrollCaptureSession.class), any(Runnable.class));
- client.startCapture(mSurface);
+ connection.startCapture(mSurface);
getInstrumentation().waitForIdleSync();
- reset(mCallback1, mClientCallbacks);
+ reset(mCallback1, mConnectionCallbacks);
}
- /** @see ScrollCaptureClient#requestImage(Rect) */
+ /** @see ScrollCaptureConnection#requestImage(Rect) */
@Test
public void testRequestImage() throws Exception {
- final ScrollCaptureClient client = new ScrollCaptureClient(mTarget1, mClientCallbacks);
- startClient(client);
+ final ScrollCaptureConnection connection = new ScrollCaptureConnection(mTarget1,
+ mConnectionCallbacks);
+ startCapture(connection);
// Stub the callback to complete the request immediately
doAnswer(reportBufferSent(/* sessionArg */ 0, /* frameNum */ 1L, new Rect(1, 2, 3, 4)))
@@ -223,7 +226,7 @@ public class ScrollCaptureClientTest {
.onScrollCaptureImageRequest(any(ScrollCaptureSession.class), any(Rect.class));
// Make the inbound binder call
- client.requestImage(new Rect(1, 2, 3, 4));
+ connection.requestImage(new Rect(1, 2, 3, 4));
// Wait for handler thread dispatch
getInstrumentation().waitForIdleSync();
@@ -232,18 +235,20 @@ public class ScrollCaptureClientTest {
// Wait for binder thread dispatch
getInstrumentation().waitForIdleSync();
- verify(mClientCallbacks, times(1)).onCaptureBufferSent(eq(1L), eq(new Rect(1, 2, 3, 4)));
+ verify(mConnectionCallbacks, times(1))
+ .onCaptureBufferSent(eq(1L), eq(new Rect(1, 2, 3, 4)));
- verifyNoMoreInteractions(mCallback1, mClientCallbacks);
+ verifyNoMoreInteractions(mCallback1, mConnectionCallbacks);
}
@Test
public void testRequestImageTimeout() throws Exception {
- final ScrollCaptureClient client = new ScrollCaptureClient(mTarget1, mClientCallbacks);
- startClient(client);
+ final ScrollCaptureConnection connection = new ScrollCaptureConnection(mTarget1,
+ mConnectionCallbacks);
+ startCapture(connection);
// Make the inbound binder call
- client.requestImage(new Rect(1, 2, 3, 4));
+ connection.requestImage(new Rect(1, 2, 3, 4));
// Wait for handler thread dispatch
getInstrumentation().waitForIdleSync();
@@ -251,20 +256,21 @@ public class ScrollCaptureClientTest {
any(ScrollCaptureSession.class), eq(new Rect(1, 2, 3, 4)));
// Force timeout to fire
- client.getTimeoutAction().timeoutNow();
+ connection.getTimeoutAction().timeoutNow();
getInstrumentation().waitForIdleSync();
// (callback not stubbed, does nothing)
// Timeout triggers request to end capture
verify(mCallback1, times(1)).onScrollCaptureEnd(any(Runnable.class));
- verifyNoMoreInteractions(mCallback1, mClientCallbacks);
+ verifyNoMoreInteractions(mCallback1, mConnectionCallbacks);
}
- /** @see ScrollCaptureClient#endCapture() */
+ /** @see ScrollCaptureConnection#endCapture() */
@Test
public void testEndCapture() throws Exception {
- final ScrollCaptureClient client = new ScrollCaptureClient(mTarget1, mClientCallbacks);
- startClient(client);
+ final ScrollCaptureConnection connection = new ScrollCaptureConnection(mTarget1,
+ mConnectionCallbacks);
+ startCapture(connection);
// Stub the callback to complete the request immediately
doAnswer(runRunnable(0))
@@ -272,7 +278,7 @@ public class ScrollCaptureClientTest {
.onScrollCaptureEnd(any(Runnable.class));
// Make the inbound binder call
- client.endCapture();
+ connection.endCapture();
// Wait for handler thread dispatch
getInstrumentation().waitForIdleSync();
@@ -280,30 +286,31 @@ public class ScrollCaptureClientTest {
// Wait for binder thread dispatch
getInstrumentation().waitForIdleSync();
- verify(mClientCallbacks, times(1)).onConnectionClosed();
+ verify(mConnectionCallbacks, times(1)).onConnectionClosed();
- verifyNoMoreInteractions(mCallback1, mClientCallbacks);
+ verifyNoMoreInteractions(mCallback1, mConnectionCallbacks);
}
@Test
public void testEndCaptureTimeout() throws Exception {
- final ScrollCaptureClient client = new ScrollCaptureClient(mTarget1, mClientCallbacks);
- startClient(client);
+ final ScrollCaptureConnection connection = new ScrollCaptureConnection(mTarget1,
+ mConnectionCallbacks);
+ startCapture(connection);
// Make the inbound binder call
- client.endCapture();
+ connection.endCapture();
// Wait for handler thread dispatch
getInstrumentation().waitForIdleSync();
verify(mCallback1, times(1)).onScrollCaptureEnd(any(Runnable.class));
// Force timeout to fire
- client.getTimeoutAction().timeoutNow();
+ connection.getTimeoutAction().timeoutNow();
// Wait for binder thread dispatch
getInstrumentation().waitForIdleSync();
- verify(mClientCallbacks, times(1)).onConnectionClosed();
+ verify(mConnectionCallbacks, times(1)).onConnectionClosed();
- verifyNoMoreInteractions(mCallback1, mClientCallbacks);
+ verifyNoMoreInteractions(mCallback1, mConnectionCallbacks);
}
}
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java
index 17fd16bccc4a..eaf5d7960aa9 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/SystemWindows.java
@@ -32,7 +32,7 @@ import android.util.Slog;
import android.util.SparseArray;
import android.view.Display;
import android.view.DragEvent;
-import android.view.IScrollCaptureController;
+import android.view.IScrollCaptureCallbacks;
import android.view.IWindow;
import android.view.IWindowManager;
import android.view.IWindowSession;
@@ -373,9 +373,9 @@ public class SystemWindows {
public void dispatchPointerCaptureChanged(boolean hasCapture) {}
@Override
- public void requestScrollCapture(IScrollCaptureController controller) {
+ public void requestScrollCapture(IScrollCaptureCallbacks callbacks) {
try {
- controller.onClientUnavailable();
+ callbacks.onUnavailable();
} catch (RemoteException ex) {
// ignore
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScrollCaptureTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScrollCaptureTest.java
index e7ef64e6adad..2b3ca7c00a49 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScrollCaptureTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScrollCaptureTest.java
@@ -25,8 +25,8 @@ import android.os.RemoteException;
import android.testing.AndroidTestingRunner;
import android.util.Log;
import android.view.Display;
-import android.view.IScrollCaptureClient;
-import android.view.IScrollCaptureController;
+import android.view.IScrollCaptureCallbacks;
+import android.view.IScrollCaptureConnection;
import android.view.IWindowManager;
import android.view.WindowManagerGlobal;
@@ -65,19 +65,20 @@ public class ScrollCaptureTest extends SysuiTestCase {
final CountDownLatch latch = new CountDownLatch(1);
try {
wms.requestScrollCapture(Display.DEFAULT_DISPLAY, null, -1,
- new IScrollCaptureController.Stub() {
+ new IScrollCaptureCallbacks.Stub() {
@Override
- public void onClientConnected(
- IScrollCaptureClient client, Rect scrollBounds,
+ public void onConnected(
+ IScrollCaptureConnection connection, Rect scrollBounds,
Point positionInWindow) {
Log.d(TAG,
- "client connected: " + client + "[scrollBounds= " + scrollBounds
- + ", positionInWindow=" + positionInWindow + "]");
+ "client connected: " + connection + "[scrollBounds= "
+ + scrollBounds + ", "
+ + "positionInWindow=" + positionInWindow + "]");
latch.countDown();
}
@Override
- public void onClientUnavailable() {
+ public void onUnavailable() {
}
@Override
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 40b770fc67ec..e348103159fc 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -225,7 +225,7 @@ import android.view.IOnKeyguardExitResult;
import android.view.IPinnedStackListener;
import android.view.IRecentsAnimationRunner;
import android.view.IRotationWatcher;
-import android.view.IScrollCaptureController;
+import android.view.IScrollCaptureCallbacks;
import android.view.ISystemGestureExclusionListener;
import android.view.IWallpaperVisibilityListener;
import android.view.IWindow;
@@ -6902,13 +6902,11 @@ public class WindowManagerService extends IWindowManager.Stub
*
* @param displayId the display for the request
* @param behindClient token for a window, used to filter the search to windows behind it
- * @param taskId specifies the id of a task the result must belong to or -1 to ignore task ids
- * @param controller the controller to receive results; a call to either
- * {@link IScrollCaptureController#onClientConnected} or
- * {@link IScrollCaptureController#onClientUnavailable}.
+ * @param taskId specifies the id of a task the result must belong to or -1 to match any task
+ * @param callbacks to receive responses
*/
public void requestScrollCapture(int displayId, @Nullable IBinder behindClient, int taskId,
- IScrollCaptureController controller) {
+ IScrollCaptureCallbacks callbacks) {
if (!checkCallingPermission(READ_FRAME_BUFFER, "requestScrollCapture()")) {
throw new SecurityException("Requires READ_FRAME_BUFFER permission");
}
@@ -6919,7 +6917,7 @@ public class WindowManagerService extends IWindowManager.Stub
if (dc == null) {
ProtoLog.e(WM_ERROR,
"Invalid displayId for requestScrollCapture: %d", displayId);
- controller.onClientUnavailable();
+ callbacks.onUnavailable();
return;
}
WindowState topWindow = null;
@@ -6928,17 +6926,17 @@ public class WindowManagerService extends IWindowManager.Stub
}
WindowState targetWindow = dc.findScrollCaptureTargetWindow(topWindow, taskId);
if (targetWindow == null) {
- controller.onClientUnavailable();
+ callbacks.onUnavailable();
return;
}
// Forward to the window for handling.
try {
- targetWindow.mClient.requestScrollCapture(controller);
+ targetWindow.mClient.requestScrollCapture(callbacks);
} catch (RemoteException e) {
ProtoLog.w(WM_ERROR,
"requestScrollCapture: caught exception dispatching to window."
+ "token=%s", targetWindow.mClient.asBinder());
- controller.onClientUnavailable();
+ callbacks.onUnavailable();
}
}
} catch (RemoteException e) {
diff --git a/services/tests/wmtests/src/com/android/server/wm/TestIWindow.java b/services/tests/wmtests/src/com/android/server/wm/TestIWindow.java
index ea1223312cb2..db1c12f525f3 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TestIWindow.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TestIWindow.java
@@ -22,7 +22,7 @@ import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
import android.util.MergedConfiguration;
import android.view.DragEvent;
-import android.view.IScrollCaptureController;
+import android.view.IScrollCaptureCallbacks;
import android.view.IWindow;
import android.view.InsetsSourceControl;
import android.view.InsetsState;
@@ -107,7 +107,7 @@ public class TestIWindow extends IWindow.Stub {
}
@Override
- public void requestScrollCapture(IScrollCaptureController controller) throws RemoteException {
+ public void requestScrollCapture(IScrollCaptureCallbacks callbacks) throws RemoteException {
}
@Override