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 com.android.adservices.service.stats; 18 19 import android.annotation.NonNull; 20 import android.annotation.Nullable; 21 22 import java.util.Objects; 23 24 /** Class for measurement registration response Stats. */ 25 public class MeasurementRegistrationResponseStats { 26 private final int mCode; 27 private final int mRegistrationType; 28 private final long mResponseSize; 29 private final String mAdTechDomain; 30 private final int mInteractionType; 31 private final int mSurfaceType; 32 private final int mRegistrationStatus; 33 private final int mFailureType; 34 private final long mRegistrationDelay; 35 private final String mSourceRegistrant; 36 private final int mRetryCount; 37 private final boolean mIsRedirectOnly; 38 private final boolean mIsPARequest; 39 private final int mNumDeletedEntities; 40 private final boolean mIsEventLevelEpsilonEnabled; 41 private final boolean mIsTriggerAggregatableValueFiltersConfigured; 42 private final boolean mIsTriggerFilteringIdConfigured; 43 private final boolean mIsTriggerContextIdConfigured; 44 MeasurementRegistrationResponseStats(Builder builder)45 private MeasurementRegistrationResponseStats(Builder builder) { 46 mCode = builder.mCode; 47 mRegistrationType = builder.mRegistrationType; 48 mResponseSize = builder.mResponseSize; 49 mAdTechDomain = builder.mAdTechDomain; 50 mInteractionType = builder.mInteractionType; 51 mSurfaceType = builder.mSurfaceType; 52 mRegistrationStatus = builder.mRegistrationStatus; 53 mFailureType = builder.mFailureType; 54 mRegistrationDelay = builder.mRegistrationDelay; 55 mSourceRegistrant = builder.mSourceRegistrant; 56 mRetryCount = builder.mRetryCount; 57 mIsRedirectOnly = builder.mIsRedirectOnly; 58 mIsPARequest = builder.mIsPARequest; 59 mNumDeletedEntities = builder.mNumDeletedEntities; 60 mIsEventLevelEpsilonEnabled = builder.mIsEventLevelEpsilonEnabled; 61 mIsTriggerAggregatableValueFiltersConfigured = 62 builder.mIsTriggerAggregatableValueFiltersConfigured; 63 mIsTriggerFilteringIdConfigured = builder.mIsTriggerFilteringIdConfigured; 64 mIsTriggerContextIdConfigured = builder.mIsTriggerContextIdConfigured; 65 } 66 67 @Override equals(Object o)68 public boolean equals(Object o) { 69 if (this == o) return true; 70 if (!(o instanceof MeasurementRegistrationResponseStats)) return false; 71 MeasurementRegistrationResponseStats that = (MeasurementRegistrationResponseStats) o; 72 return mCode == that.mCode 73 && mRegistrationType == that.mRegistrationType 74 && mResponseSize == that.mResponseSize 75 && Objects.equals(mAdTechDomain, that.mAdTechDomain) 76 && mInteractionType == that.mInteractionType 77 && mSurfaceType == that.mSurfaceType 78 && mRegistrationStatus == that.mRegistrationStatus 79 && mFailureType == that.mFailureType 80 && mRegistrationDelay == that.mRegistrationDelay 81 && Objects.equals(mSourceRegistrant, that.mSourceRegistrant) 82 && mRetryCount == that.mRetryCount 83 && mIsRedirectOnly == that.mIsRedirectOnly 84 && mIsPARequest == that.mIsPARequest 85 && mNumDeletedEntities == that.mNumDeletedEntities 86 && mIsEventLevelEpsilonEnabled == that.mIsEventLevelEpsilonEnabled 87 && mIsTriggerAggregatableValueFiltersConfigured 88 == that.mIsTriggerAggregatableValueFiltersConfigured 89 && mIsTriggerFilteringIdConfigured == that.mIsTriggerFilteringIdConfigured 90 && mIsTriggerContextIdConfigured == that.mIsTriggerContextIdConfigured; 91 } 92 93 @Override hashCode()94 public int hashCode() { 95 return Objects.hash( 96 mCode, 97 mRegistrationType, 98 mResponseSize, 99 mAdTechDomain, 100 mInteractionType, 101 mSurfaceType, 102 mRegistrationStatus, 103 mFailureType, 104 mRegistrationDelay, 105 mSourceRegistrant, 106 mRetryCount, 107 mIsRedirectOnly, 108 mIsPARequest, 109 mNumDeletedEntities, 110 mIsEventLevelEpsilonEnabled, 111 mIsTriggerAggregatableValueFiltersConfigured, 112 mIsTriggerFilteringIdConfigured, 113 mIsTriggerContextIdConfigured); 114 } 115 116 @Override toString()117 public String toString() { 118 return "MeasurementRegistrationResponseStats{" 119 + "mCode=" 120 + mCode 121 + ", mRegistrationType=" 122 + mRegistrationType 123 + ", mResponseSize=" 124 + mResponseSize 125 + ", mAdTechDomain='" 126 + mAdTechDomain 127 + ", mInteractionType=" 128 + mInteractionType 129 + ", mSurfaceType=" 130 + mSurfaceType 131 + ", mRegistrationStatus=" 132 + mRegistrationStatus 133 + ", mFailureType=" 134 + mFailureType 135 + ", mRegistrationDelay=" 136 + mRegistrationDelay 137 + ", mSourceRegistrant=" 138 + mSourceRegistrant 139 + ", mRetryCount=" 140 + mRetryCount 141 + ", mIsRedirectOnly=" 142 + mIsRedirectOnly 143 + ", mIsPARequest=" 144 + mIsPARequest 145 + ", mNumDeletedEntities=" 146 + mNumDeletedEntities 147 + ", mIsEventLevelEpsilonEnabled=" 148 + mIsEventLevelEpsilonEnabled 149 + ", mIsTriggerAggregatableValueFiltersConfigured=" 150 + mIsTriggerAggregatableValueFiltersConfigured 151 + ", mIsTriggerFilteringIdConfigured=" 152 + mIsTriggerFilteringIdConfigured 153 + ", mIsTriggerContextIdConfigured=" 154 + mIsTriggerContextIdConfigured 155 + '}'; 156 } 157 getCode()158 public int getCode() { 159 return mCode; 160 } 161 getRegistrationType()162 public int getRegistrationType() { 163 return mRegistrationType; 164 } 165 getResponseSize()166 public long getResponseSize() { 167 return mResponseSize; 168 } 169 170 @Nullable getAdTechDomain()171 public String getAdTechDomain() { 172 return mAdTechDomain; 173 } 174 getInteractionType()175 public int getInteractionType() { 176 return mInteractionType; 177 } 178 getSurfaceType()179 public int getSurfaceType() { 180 return mSurfaceType; 181 } 182 getRegistrationStatus()183 public int getRegistrationStatus() { 184 return mRegistrationStatus; 185 } 186 getFailureType()187 public int getFailureType() { 188 return mFailureType; 189 } 190 getRegistrationDelay()191 public long getRegistrationDelay() { 192 return mRegistrationDelay; 193 } 194 getSourceRegistrant()195 public String getSourceRegistrant() { 196 return mSourceRegistrant; 197 } 198 getRetryCount()199 public int getRetryCount() { 200 return mRetryCount; 201 } 202 isRedirectOnly()203 public boolean isRedirectOnly() { 204 return mIsRedirectOnly; 205 } 206 isPARequest()207 public boolean isPARequest() { 208 return mIsPARequest; 209 } 210 getNumDeletedEntities()211 public int getNumDeletedEntities() { 212 return mNumDeletedEntities; 213 } 214 isEventLevelEpsilonEnabled()215 public boolean isEventLevelEpsilonEnabled() { 216 return mIsEventLevelEpsilonEnabled; 217 } 218 isTriggerAggregatableValueFiltersConfigured()219 public boolean isTriggerAggregatableValueFiltersConfigured() { 220 return mIsTriggerAggregatableValueFiltersConfigured; 221 } 222 isTriggerFilteringIdConfigured()223 public boolean isTriggerFilteringIdConfigured() { 224 return mIsTriggerFilteringIdConfigured; 225 } 226 isTriggerContextIdConfigured()227 public boolean isTriggerContextIdConfigured() { 228 return mIsTriggerContextIdConfigured; 229 } 230 231 /** Builder for {@link MeasurementRegistrationResponseStats}. */ 232 public static final class Builder { 233 private final int mCode; 234 private final int mRegistrationType; 235 private final long mResponseSize; 236 private String mAdTechDomain; 237 private final int mInteractionType; 238 private final int mSurfaceType; 239 private final int mRegistrationStatus; 240 private final int mFailureType; 241 private final long mRegistrationDelay; 242 private final String mSourceRegistrant; 243 private final int mRetryCount; 244 private final boolean mIsRedirectOnly; 245 private final boolean mIsPARequest; 246 private final int mNumDeletedEntities; 247 private final boolean mIsEventLevelEpsilonEnabled; 248 private final boolean mIsTriggerAggregatableValueFiltersConfigured; 249 private final boolean mIsTriggerFilteringIdConfigured; 250 private final boolean mIsTriggerContextIdConfigured; 251 Builder( int code, int registrationType, long responseSize, int interactionType, int surfaceType, int registrationStatus, int failureType, long registrationDelay, String sourceRegistrant, int retryCount, boolean isRedirectOnly, boolean isPARequest, int numDeletedEntities, boolean isEventLevelEpsilonEnabled, boolean isTriggerAggregatableValueFiltersConfigured, boolean isTriggerFilteringIdConfigured, boolean isTriggerContextIdConfigured)252 public Builder( 253 int code, 254 int registrationType, 255 long responseSize, 256 int interactionType, 257 int surfaceType, 258 int registrationStatus, 259 int failureType, 260 long registrationDelay, 261 String sourceRegistrant, 262 int retryCount, 263 boolean isRedirectOnly, 264 boolean isPARequest, 265 int numDeletedEntities, 266 boolean isEventLevelEpsilonEnabled, 267 boolean isTriggerAggregatableValueFiltersConfigured, 268 boolean isTriggerFilteringIdConfigured, 269 boolean isTriggerContextIdConfigured) { 270 mCode = code; 271 mRegistrationType = registrationType; 272 mResponseSize = responseSize; 273 mInteractionType = interactionType; 274 mSurfaceType = surfaceType; 275 mRegistrationStatus = registrationStatus; 276 mFailureType = failureType; 277 mRegistrationDelay = registrationDelay; 278 mSourceRegistrant = sourceRegistrant; 279 mRetryCount = retryCount; 280 mIsRedirectOnly = isRedirectOnly; 281 mIsPARequest = isPARequest; 282 mNumDeletedEntities = numDeletedEntities; 283 mIsEventLevelEpsilonEnabled = isEventLevelEpsilonEnabled; 284 mIsTriggerAggregatableValueFiltersConfigured = 285 isTriggerAggregatableValueFiltersConfigured; 286 mIsTriggerFilteringIdConfigured = isTriggerFilteringIdConfigured; 287 mIsTriggerContextIdConfigured = isTriggerContextIdConfigured; 288 } 289 290 /** See {@link MeasurementRegistrationResponseStats#getAdTechDomain()} . */ 291 @NonNull setAdTechDomain( @ullable String adTechDomain)292 public MeasurementRegistrationResponseStats.Builder setAdTechDomain( 293 @Nullable String adTechDomain) { 294 mAdTechDomain = adTechDomain; 295 return this; 296 } 297 298 /** Build the {@link MeasurementRegistrationResponseStats}. */ 299 @NonNull build()300 public MeasurementRegistrationResponseStats build() { 301 return new MeasurementRegistrationResponseStats(this); 302 } 303 } 304 } 305