xref: /aosp_15_r20/external/android_onboarding/java/com/android/onboarding/tasks/OnboardingTaskToken.kt (revision c625018464ae97c56936c82b1b617e11aa899faa)
1 package com.android.onboarding.tasks
2 
3 import android.os.Parcel
4 import android.os.Parcelable
5 
6 /**
7  * Represents a token to an onboarding task executor along with its associated contract.
8  *
9  * This class is used to uniquely identify and reference an onboarding task executor and its
10  * contract.
11  *
12  * @property taskContractClass The fully qualified class name of the associated
13  *   [OnboardingTaskContract].
14  * @property taskComponentName The component name of the task. Name is defined in
15  *   [OnboardingComponents].
16  */
17 data class OnboardingTaskToken(val taskContractClass: String, val taskComponentName: String) :
18   Parcelable {
19   constructor(
20     parcel: Parcel
21   ) : this(
22     taskContractClass = parcel.readString() ?: error("taskContractClass is missing in the parcel"),
23     taskComponentName = parcel.readString() ?: error("taskComponentName is missing in the parcel"),
24   )
25 
writeToParcelnull26   override fun writeToParcel(parcel: Parcel, flags: Int) {
27     parcel.writeString(taskContractClass)
28     parcel.writeString(taskComponentName)
29   }
30 
describeContentsnull31   override fun describeContents(): Int = 0
32 
33   companion object CREATOR : Parcelable.Creator<OnboardingTaskToken> {
34     const val INVALID_STRING = "INVALID"
35     // Constant representing an invalid token
36     val INVALID: OnboardingTaskToken =
37       OnboardingTaskToken(taskContractClass = INVALID_STRING, taskComponentName = INVALID_STRING)
38 
39     override fun createFromParcel(parcel: Parcel): OnboardingTaskToken {
40       return OnboardingTaskToken(parcel)
41     }
42 
43     override fun newArray(size: Int): Array<OnboardingTaskToken?> {
44       return arrayOfNulls(size)
45     }
46   }
47 }
48