1 /*
2  * Copyright (C) 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 android.adservices.common;
18 
19 import android.annotation.NonNull;
20 import android.annotation.Nullable;
21 import android.os.Parcel;
22 import android.os.Parcelable;
23 
24 import java.util.Objects;
25 
26 /**
27  * Result from the isAdServicesEnabled API.
28  *
29  * @hide
30  */
31 public final class IsAdServicesEnabledResult implements Parcelable {
32     @Nullable private final String mErrorMessage;
33     private final boolean mAdServicesEnabled;
34 
IsAdServicesEnabledResult(@ullable String errorMessage, @NonNull boolean enabled)35     private IsAdServicesEnabledResult(@Nullable String errorMessage, @NonNull boolean enabled) {
36         mErrorMessage = errorMessage;
37         mAdServicesEnabled = enabled;
38     }
39 
IsAdServicesEnabledResult(@onNull Parcel in)40     private IsAdServicesEnabledResult(@NonNull Parcel in) {
41         mErrorMessage = in.readString();
42         mAdServicesEnabled = in.readBoolean();
43     }
44 
45     public static final @NonNull Creator<IsAdServicesEnabledResult> CREATOR =
46             new Creator<IsAdServicesEnabledResult>() {
47                 @Override
48                 public IsAdServicesEnabledResult createFromParcel(Parcel in) {
49                     return new IsAdServicesEnabledResult(in);
50                 }
51 
52                 @Override
53                 public IsAdServicesEnabledResult[] newArray(int size) {
54                     return new IsAdServicesEnabledResult[size];
55                 }
56             };
57 
58     /** @hide */
59     @Override
describeContents()60     public int describeContents() {
61         return 0;
62     }
63 
64     /** @hide */
65     @Override
writeToParcel(@onNull Parcel out, int flags)66     public void writeToParcel(@NonNull Parcel out, int flags) {
67         out.writeString(mErrorMessage);
68         out.writeBoolean(mAdServicesEnabled);
69     }
70 
71     /** Returns the error message associated with this result. */
72     @Nullable
getErrorMessage()73     public String getErrorMessage() {
74         return mErrorMessage;
75     }
76 
77     /** Returns the Adservices enabled status. */
78     @NonNull
getAdServicesEnabled()79     public boolean getAdServicesEnabled() {
80         return mAdServicesEnabled;
81     }
82 
83     @Override
toString()84     public String toString() {
85         return "GetAdserviceStatusResult{"
86                 + ", mErrorMessage='"
87                 + mErrorMessage
88                 + ", mAdservicesEnabled="
89                 + mAdServicesEnabled
90                 + '}';
91     }
92 
93     @Override
equals(Object o)94     public boolean equals(Object o) {
95         if (this == o) {
96             return true;
97         }
98 
99         if (!(o instanceof IsAdServicesEnabledResult)) {
100             return false;
101         }
102 
103         IsAdServicesEnabledResult that = (IsAdServicesEnabledResult) o;
104 
105         return Objects.equals(mErrorMessage, that.mErrorMessage)
106                 && mAdServicesEnabled == that.mAdServicesEnabled;
107     }
108 
109     @Override
hashCode()110     public int hashCode() {
111         return Objects.hash(mErrorMessage, mAdServicesEnabled);
112     }
113 
114     /**
115      * Builder for {@link IsAdServicesEnabledResult} objects.
116      *
117      * @hide
118      */
119     public static final class Builder {
120         @Nullable private String mErrorMessage;
121         private boolean mAdServicesEnabled;
122 
Builder()123         public Builder() {}
124 
125         /** Set the Error Message. */
setErrorMessage(@ullable String errorMessage)126         public @NonNull Builder setErrorMessage(@Nullable String errorMessage) {
127             mErrorMessage = errorMessage;
128             return this;
129         }
130 
131         /** Set the list of the returned Status */
setAdServicesEnabled(@onNull boolean adServicesEnabled)132         public @NonNull Builder setAdServicesEnabled(@NonNull boolean adServicesEnabled) {
133             mAdServicesEnabled = adServicesEnabled;
134             return this;
135         }
136 
137         /**
138          * Builds a {@link IsAdServicesEnabledResult} instance.
139          *
140          * <p>throws IllegalArgumentException if any of the params are null or there is any mismatch
141          * in the size of ModelVersions and TaxonomyVersions.
142          */
build()143         public @NonNull IsAdServicesEnabledResult build() {
144             return new IsAdServicesEnabledResult(mErrorMessage, mAdServicesEnabled);
145         }
146     }
147 }
148