1 /*
2  * Copyright 2022 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 androidx.camera.mlkit.vision
18 
19 import android.app.Activity
20 import com.google.android.gms.tasks.OnCompleteListener
21 import com.google.android.gms.tasks.OnFailureListener
22 import com.google.android.gms.tasks.OnSuccessListener
23 import com.google.android.gms.tasks.Task
24 import java.util.concurrent.CancellationException
25 import java.util.concurrent.Executor
26 
27 /** Fake GmsCore [Task] that returns immediately. */
28 class FakeTask<T>(
29     private val result: T?,
30     private val exception: Exception? = null,
31     private val canceled: Boolean = false
32 ) : Task<T>() {
33 
isCompletenull34     override fun isComplete(): Boolean {
35         return true
36     }
37 
isSuccessfulnull38     override fun isSuccessful(): Boolean {
39         return result != null && !canceled && exception == null
40     }
41 
isCancelednull42     override fun isCanceled(): Boolean {
43         return canceled
44     }
45 
getResultnull46     override fun getResult(): T? {
47         if (canceled) {
48             throw CancellationException()
49         }
50         return result
51     }
52 
getExceptionnull53     override fun getException(): java.lang.Exception? {
54         return exception
55     }
56 
addOnCompleteListenernull57     override fun addOnCompleteListener(
58         executor: Executor,
59         listener: OnCompleteListener<T>
60     ): Task<T> {
61         executor.execute { listener.onComplete(this) }
62         return this
63     }
64 
getResultnull65     override fun <X : Throwable?> getResult(exceptionType: Class<X>): T {
66         TODO("Not yet implemented")
67     }
68 
addOnSuccessListenernull69     override fun addOnSuccessListener(listener: OnSuccessListener<in T>): Task<T> {
70         TODO("Not yet implemented")
71     }
72 
addOnSuccessListenernull73     override fun addOnSuccessListener(
74         executor: Executor,
75         listener: OnSuccessListener<in T>
76     ): Task<T> {
77         TODO("Not yet implemented")
78     }
79 
addOnSuccessListenernull80     override fun addOnSuccessListener(
81         activity: Activity,
82         listener: OnSuccessListener<in T>
83     ): Task<T> {
84         TODO("Not yet implemented")
85     }
86 
addOnFailureListenernull87     override fun addOnFailureListener(listener: OnFailureListener): Task<T> {
88         TODO("Not yet implemented")
89     }
90 
addOnFailureListenernull91     override fun addOnFailureListener(executor: Executor, listener: OnFailureListener): Task<T> {
92         TODO("Not yet implemented")
93     }
94 
addOnFailureListenernull95     override fun addOnFailureListener(activity: Activity, listener: OnFailureListener): Task<T> {
96         TODO("Not yet implemented")
97     }
98 }
99