1 /*
2  * Copyright (C) 2023 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.inputmethod;
18 
19 import android.annotation.NonNull;
20 import android.annotation.Nullable;
21 import android.annotation.TestApi;
22 import android.os.CancellationSignal;
23 import android.os.CancellationSignalBeamer;
24 import android.os.IBinder;
25 
26 /**
27  * A {@link HandwritingGesture} that can be {@link CancellationSignal#cancel() cancelled}.
28  * @hide
29  */
30 @TestApi
31 public abstract class CancellableHandwritingGesture extends HandwritingGesture {
32     @NonNull
33     CancellationSignal mCancellationSignal;
34 
35     @Nullable
36     IBinder mCancellationSignalToken;
37 
38 
39     /**
40      * Set {@link CancellationSignal} for testing only.
41      * @hide
42      */
43     @TestApi
setCancellationSignal(@onNull CancellationSignal cancellationSignal)44     public void setCancellationSignal(@NonNull CancellationSignal cancellationSignal) {
45         mCancellationSignal = cancellationSignal;
46     }
47 
48     @NonNull
getCancellationSignal()49     CancellationSignal getCancellationSignal() {
50         return mCancellationSignal;
51     }
52 
53     /**
54      * Unbeam cancellation token.
55      * @hide
56      */
unbeamCancellationSignal(@onNull CancellationSignalBeamer.Receiver receiver)57     public void unbeamCancellationSignal(@NonNull CancellationSignalBeamer.Receiver receiver) {
58         if (mCancellationSignalToken != null) {
59             mCancellationSignal = receiver.unbeam(mCancellationSignalToken);
60             mCancellationSignalToken = null;
61         }
62     }
63 
64 }
65