xref: /aosp_15_r20/external/android_onboarding/java/com/android/onboarding/contracts/ContractResult.kt (revision c625018464ae97c56936c82b1b617e11aa899faa)
1 package com.android.onboarding.contracts
2 
3 import android.content.Intent
4 import androidx.activity.result.ActivityResult
5 import com.android.onboarding.contracts.annotations.InternalOnboardingApi
6 
7 /** An [ActivityNodeResult] used by lightweight Activity node contracts. */
8 sealed interface ContractResult : ActivityNodeResult {
9   val resultCode: Int
10   val intent: Intent?
11 
toActivityResultnull12   override fun toActivityResult() = ActivityResult(resultCode, intent)
13 
14   data class Success
15   @JvmOverloads
16   constructor(override val resultCode: Int, override val intent: Intent? = null) :
17     ContractResult, NodeResult.Success
18 
19   data class Failure
20   @JvmOverloads
21   constructor(
22     override val resultCode: Int,
23     override val intent: Intent? = null,
24     val reason: String? = null,
25   ) : ContractResult, NodeResult.Failure
26 }
27 
28 @InternalOnboardingApi
29 data class UnknownContractResult(
30   override val resultCode: Int,
31   override val intent: Intent? = null,
32 ) : ContractResult, NodeResult.Success
33