• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.measurement;
18 
19 import android.annotation.NonNull;
20 import android.os.Parcel;
21 import android.os.Parcelable;
22 
23 import java.util.Objects;
24 
25 /**
26  * Internal source registration request object to communicate from {@link MeasurementManager} to
27  * {@link IMeasurementService}.
28  *
29  * @hide
30  */
31 public class WebSourceRegistrationRequestInternal implements Parcelable {
32     /** Creator for Parcelable (via reflection). */
33     public static final Parcelable.Creator<WebSourceRegistrationRequestInternal> CREATOR =
34             new Parcelable.Creator<WebSourceRegistrationRequestInternal>() {
35                 @Override
36                 public WebSourceRegistrationRequestInternal createFromParcel(Parcel in) {
37                     return new WebSourceRegistrationRequestInternal(in);
38                 }
39 
40                 @Override
41                 public WebSourceRegistrationRequestInternal[] newArray(int size) {
42                     return new WebSourceRegistrationRequestInternal[size];
43                 }
44             };
45     /** Holds input to measurement source registration calls from web context. */
46     @NonNull private final WebSourceRegistrationRequest mSourceRegistrationRequest;
47     /** Holds app package info of where the request is coming from. */
48     @NonNull private final String mAppPackageName;
49     /** Holds sdk package info of where the request is coming from. */
50     @NonNull private final String mSdkPackageName;
51     /** Time the request was created, as millis since boot excluding time in deep sleep. */
52     private final long mRequestTime;
53     /** AD ID Permission Granted. */
54     private final boolean mIsAdIdPermissionGranted;
55 
WebSourceRegistrationRequestInternal(@onNull Builder builder)56     private WebSourceRegistrationRequestInternal(@NonNull Builder builder) {
57         mSourceRegistrationRequest = builder.mSourceRegistrationRequest;
58         mAppPackageName = builder.mAppPackageName;
59         mSdkPackageName = builder.mSdkPackageName;
60         mRequestTime = builder.mRequestTime;
61         mIsAdIdPermissionGranted = builder.mIsAdIdPermissionGranted;
62     }
63 
WebSourceRegistrationRequestInternal(Parcel in)64     private WebSourceRegistrationRequestInternal(Parcel in) {
65         Objects.requireNonNull(in);
66         mSourceRegistrationRequest = WebSourceRegistrationRequest.CREATOR.createFromParcel(in);
67         mAppPackageName = in.readString();
68         mSdkPackageName = in.readString();
69         mRequestTime = in.readLong();
70         mIsAdIdPermissionGranted = in.readBoolean();
71     }
72 
73     /** Getter for {@link #mSourceRegistrationRequest}. */
getSourceRegistrationRequest()74     public WebSourceRegistrationRequest getSourceRegistrationRequest() {
75         return mSourceRegistrationRequest;
76     }
77 
78     /** Getter for {@link #mAppPackageName}. */
getAppPackageName()79     public String getAppPackageName() {
80         return mAppPackageName;
81     }
82 
83     /** Getter for {@link #mSdkPackageName}. */
getSdkPackageName()84     public String getSdkPackageName() {
85         return mSdkPackageName;
86     }
87 
88     /** Getter for {@link #mRequestTime}. */
getRequestTime()89     public long getRequestTime() {
90         return mRequestTime;
91     }
92 
93     /** Getter for {@link #mIsAdIdPermissionGranted}. */
isAdIdPermissionGranted()94     public boolean isAdIdPermissionGranted() {
95         return mIsAdIdPermissionGranted;
96     }
97 
98     @Override
equals(Object o)99     public boolean equals(Object o) {
100         if (this == o) return true;
101         if (!(o instanceof WebSourceRegistrationRequestInternal)) return false;
102         WebSourceRegistrationRequestInternal that = (WebSourceRegistrationRequestInternal) o;
103         return Objects.equals(mSourceRegistrationRequest, that.mSourceRegistrationRequest)
104                 && Objects.equals(mAppPackageName, that.mAppPackageName)
105                 && Objects.equals(mSdkPackageName, that.mSdkPackageName)
106                 && mRequestTime == that.mRequestTime
107                 && mIsAdIdPermissionGranted == that.mIsAdIdPermissionGranted;
108     }
109 
110     @Override
hashCode()111     public int hashCode() {
112         return Objects.hash(
113                 mSourceRegistrationRequest,
114                 mAppPackageName,
115                 mSdkPackageName,
116                 mIsAdIdPermissionGranted);
117     }
118 
119     @Override
describeContents()120     public int describeContents() {
121         return 0;
122     }
123 
124     @Override
writeToParcel(@onNull Parcel out, int flags)125     public void writeToParcel(@NonNull Parcel out, int flags) {
126         Objects.requireNonNull(out);
127         mSourceRegistrationRequest.writeToParcel(out, flags);
128         out.writeString(mAppPackageName);
129         out.writeString(mSdkPackageName);
130         out.writeLong(mRequestTime);
131         out.writeBoolean(mIsAdIdPermissionGranted);
132     }
133 
134     /** Builder for {@link WebSourceRegistrationRequestInternal}. */
135     public static final class Builder {
136         /** External source registration request from client app SDK. */
137         @NonNull private final WebSourceRegistrationRequest mSourceRegistrationRequest;
138         /** Package name of the app used for the registration. Used to determine the registrant. */
139         @NonNull private final String mAppPackageName;
140         /** Package name of the sdk used for the registration. */
141         @NonNull private final String mSdkPackageName;
142         /** Time the request was created, as millis since boot excluding time in deep sleep. */
143         private final long mRequestTime;
144         /** AD ID Permission Granted. */
145         private boolean mIsAdIdPermissionGranted;
146         /**
147          * Builder constructor for {@link WebSourceRegistrationRequestInternal}.
148          *
149          * @param sourceRegistrationRequest external source registration request
150          * @param appPackageName app package name that is calling PP API
151          * @param sdkPackageName sdk package name that is calling PP API
152          */
Builder( @onNull WebSourceRegistrationRequest sourceRegistrationRequest, @NonNull String appPackageName, @NonNull String sdkPackageName, long requestTime)153         public Builder(
154                 @NonNull WebSourceRegistrationRequest sourceRegistrationRequest,
155                 @NonNull String appPackageName,
156                 @NonNull String sdkPackageName,
157                 long requestTime) {
158             Objects.requireNonNull(sourceRegistrationRequest);
159             Objects.requireNonNull(appPackageName);
160             Objects.requireNonNull(sdkPackageName);
161             mSourceRegistrationRequest = sourceRegistrationRequest;
162             mAppPackageName = appPackageName;
163             mSdkPackageName = sdkPackageName;
164             mRequestTime = requestTime;
165         }
166 
167         /** Pre-validates parameters and builds {@link WebSourceRegistrationRequestInternal}. */
168         @NonNull
build()169         public WebSourceRegistrationRequestInternal build() {
170             return new WebSourceRegistrationRequestInternal(this);
171         }
172 
173         /** See {@link WebSourceRegistrationRequestInternal#isAdIdPermissionGranted()}. */
setAdIdPermissionGranted( boolean isAdIdPermissionGranted)174         public WebSourceRegistrationRequestInternal.Builder setAdIdPermissionGranted(
175                 boolean isAdIdPermissionGranted) {
176             mIsAdIdPermissionGranted = isAdIdPermissionGranted;
177             return this;
178         }
179     }
180 }
181