1 /*
2  * Copyright (C) 2021 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.view;
18 
19 import static org.junit.Assert.*;
20 
21 import android.graphics.Rect;
22 import android.os.CancellationSignal;
23 
24 import androidx.annotation.NonNull;
25 
26 import java.util.function.Consumer;
27 
28 class TestScrollCaptureCallback implements ScrollCaptureCallback {
29     private Consumer<Rect> mSearchConsumer;
30     private Runnable mStartOnReady;
31     private Consumer<Rect> mImageOnComplete;
32     private Runnable mOnEndReady;
33     private volatile int mModCount;
34 
35     @Override
onScrollCaptureSearch(@onNull CancellationSignal signal, @NonNull Consumer<Rect> onReady)36     public void onScrollCaptureSearch(@NonNull CancellationSignal signal,
37             @NonNull Consumer<Rect> onReady) {
38         mSearchConsumer = onReady;
39         mModCount++;
40     }
41 
42     @Override
onScrollCaptureStart(@onNull ScrollCaptureSession session, @NonNull CancellationSignal signal, @NonNull Runnable onReady)43     public void onScrollCaptureStart(@NonNull ScrollCaptureSession session,
44             @NonNull CancellationSignal signal, @NonNull Runnable onReady) {
45         mStartOnReady = onReady;
46         mModCount++;
47     }
48 
49     @Override
onScrollCaptureImageRequest(@onNull ScrollCaptureSession session, @NonNull CancellationSignal signal, @NonNull Rect captureArea, @NonNull Consumer<Rect> onComplete)50     public void onScrollCaptureImageRequest(@NonNull ScrollCaptureSession session,
51             @NonNull CancellationSignal signal, @NonNull Rect captureArea,
52             @NonNull Consumer<Rect> onComplete) {
53         mImageOnComplete = onComplete;
54         mModCount++;
55     }
56 
57     @Override
onScrollCaptureEnd(@onNull Runnable onReady)58     public void onScrollCaptureEnd(@NonNull Runnable onReady) {
59         mOnEndReady = onReady;
60     }
61 
completeSearchRequest(Rect scrollBounds)62     void completeSearchRequest(Rect scrollBounds) {
63         assertNotNull("Did not receive search request", mSearchConsumer);
64         mSearchConsumer.accept(scrollBounds);
65         mModCount++;
66     }
67 
verifyZeroInteractions()68     void verifyZeroInteractions() {
69         assertEquals("Expected zero interactions", 0, mModCount);
70     }
71 
completeStartRequest()72     void completeStartRequest() {
73         assertNotNull("Did not receive start request", mStartOnReady);
74         mStartOnReady.run();
75     }
76 
completeImageRequest(Rect captured)77     void completeImageRequest(Rect captured) {
78         assertNotNull("Did not receive image request", mImageOnComplete);
79         mImageOnComplete.accept(captured);
80     }
81 
completeEndRequest()82     void completeEndRequest() {
83         assertNotNull("Did not receive end request", mOnEndReady);
84         mOnEndReady.run();
85     }
86 }
87