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.Nullable; 20 21 import com.android.adservices.service.common.AppManifestConfigCall; 22 import com.android.adservices.service.common.AppManifestConfigHelper; 23 import com.android.adservices.service.stats.kanon.KAnonBackgroundJobStatusStats; 24 import com.android.adservices.service.stats.kanon.KAnonGetChallengeStatusStats; 25 import com.android.adservices.service.stats.kanon.KAnonImmediateSignJoinStatusStats; 26 import com.android.adservices.service.stats.kanon.KAnonInitializeStatusStats; 27 import com.android.adservices.service.stats.kanon.KAnonJoinStatusStats; 28 import com.android.adservices.service.stats.kanon.KAnonSignStatusStats; 29 import com.android.adservices.service.stats.pas.EncodingFetchStats; 30 import com.android.adservices.service.stats.pas.EncodingJobRunStats; 31 import com.android.adservices.service.stats.pas.EncodingJsExecutionStats; 32 import com.android.adservices.service.stats.pas.PersistAdSelectionResultCalledStats; 33 import com.android.adservices.service.stats.pas.UpdateSignalsApiCalledStats; 34 import com.android.adservices.service.stats.pas.UpdateSignalsProcessReportedStats; 35 36 /** Interface for Adservices logger. */ 37 public interface AdServicesLogger { 38 /** log method for MeasurementReportsStats. */ logMeasurementReports( MeasurementReportsStats measurementReportsStats, @Nullable String enrollmentId)39 void logMeasurementReports( 40 MeasurementReportsStats measurementReportsStats, @Nullable String enrollmentId); 41 42 /** log ApiCallStats which has stats about the API call such as the status. */ logApiCallStats(ApiCallStats apiCallStats)43 void logApiCallStats(ApiCallStats apiCallStats); 44 45 /** log UIStats which has stats about UI events. */ logUIStats(UIStats uiStats)46 void logUIStats(UIStats uiStats); 47 48 /** 49 * Logs API call stats specific to the FLEDGE APIs as an {@link ApiCallStats} object with app 50 * package name, if enabled. 51 */ logFledgeApiCallStats(int apiName, String appPackageName, int resultCode, int latencyMs)52 void logFledgeApiCallStats(int apiName, String appPackageName, int resultCode, int latencyMs); 53 54 /** Logs API call stats specific to the FLEDGE APIs as an {@link ApiCallStats} object. */ logFledgeApiCallStats(int apiName, int resultCode, int latencyMs)55 void logFledgeApiCallStats(int apiName, int resultCode, int latencyMs); 56 57 /** Logs measurement registrations response size. */ logMeasurementRegistrationsResponseSize( MeasurementRegistrationResponseStats stats, @Nullable String enrollmentId)58 void logMeasurementRegistrationsResponseSize( 59 MeasurementRegistrationResponseStats stats, @Nullable String enrollmentId); 60 61 /** 62 * Logs the runAdSelection process stats as an {@link RunAdSelectionProcessReportedStats} 63 * object. 64 */ logRunAdSelectionProcessReportedStats(RunAdSelectionProcessReportedStats stats)65 void logRunAdSelectionProcessReportedStats(RunAdSelectionProcessReportedStats stats); 66 67 /** 68 * Logs the runAdBidding process stats as an {@link RunAdBiddingProcessReportedStats} object. 69 */ logRunAdBiddingProcessReportedStats(RunAdBiddingProcessReportedStats stats)70 void logRunAdBiddingProcessReportedStats(RunAdBiddingProcessReportedStats stats); 71 72 /** 73 * Logs the runAdScoring process stats as an {@link RunAdScoringProcessReportedStats} object. 74 */ logRunAdScoringProcessReportedStats(RunAdScoringProcessReportedStats stats)75 void logRunAdScoringProcessReportedStats(RunAdScoringProcessReportedStats stats); 76 77 /** 78 * Logs the runAdBiddingPerCA process stats as an {@link RunAdBiddingPerCAProcessReportedStats} 79 * object. 80 */ logRunAdBiddingPerCAProcessReportedStats(RunAdBiddingPerCAProcessReportedStats stats)81 void logRunAdBiddingPerCAProcessReportedStats(RunAdBiddingPerCAProcessReportedStats stats); 82 83 /** 84 * Logs the backgroundFetch process stats as an {@link BackgroundFetchProcessReportedStats} 85 * object. 86 */ logBackgroundFetchProcessReportedStats(BackgroundFetchProcessReportedStats stats)87 void logBackgroundFetchProcessReportedStats(BackgroundFetchProcessReportedStats stats); 88 89 /** 90 * Logs the updateCustomAudience process stats as an {@link 91 * com.android.adservices.service.stats.UpdateCustomAudienceProcessReportedStats} objects. 92 */ logUpdateCustomAudienceProcessReportedStats( UpdateCustomAudienceProcessReportedStats stats)93 void logUpdateCustomAudienceProcessReportedStats( 94 UpdateCustomAudienceProcessReportedStats stats); 95 96 /** 97 * Logs GetTopics API call stats as an {@link 98 * com.android.adservices.service.stats.GetTopicsReportedStats} object. 99 */ logGetTopicsReportedStats(GetTopicsReportedStats stats)100 void logGetTopicsReportedStats(GetTopicsReportedStats stats); 101 102 /** 103 * Logs stats for getTopTopics as an {@link 104 * com.android.adservices.service.stats.EpochComputationGetTopTopicsStats} object. 105 */ logEpochComputationGetTopTopicsStats(EpochComputationGetTopTopicsStats stats)106 void logEpochComputationGetTopTopicsStats(EpochComputationGetTopTopicsStats stats); 107 108 /** 109 * Logs classifier stats during epoch computation as an {@link 110 * com.android.adservices.service.stats.EpochComputationClassifierStats} object. 111 */ logEpochComputationClassifierStats(EpochComputationClassifierStats stats)112 void logEpochComputationClassifierStats(EpochComputationClassifierStats stats); 113 114 /** Logs measurement debug keys stats. */ logMeasurementDebugKeysMatch(MsmtDebugKeysMatchStats stats)115 void logMeasurementDebugKeysMatch(MsmtDebugKeysMatchStats stats); 116 117 /** Logs measurement AdID match for debug keys stats. */ logMeasurementAdIdMatchForDebugKeysStats(MsmtAdIdMatchForDebugKeysStats stats)118 void logMeasurementAdIdMatchForDebugKeysStats(MsmtAdIdMatchForDebugKeysStats stats); 119 120 /** Logs measurement attribution stats. */ logMeasurementAttributionStats( MeasurementAttributionStats measurementAttributionStats, @Nullable String enrollmentId)121 void logMeasurementAttributionStats( 122 MeasurementAttributionStats measurementAttributionStats, @Nullable String enrollmentId); 123 124 /** Logs measurement wipeout stats. */ logMeasurementWipeoutStats(MeasurementWipeoutStats measurementWipeoutStats)125 void logMeasurementWipeoutStats(MeasurementWipeoutStats measurementWipeoutStats); 126 127 /** Logs measurement delayed source registration stats. */ logMeasurementDelayedSourceRegistrationStats( MeasurementDelayedSourceRegistrationStats measurementDelayedSourceRegistrationStats)128 void logMeasurementDelayedSourceRegistrationStats( 129 MeasurementDelayedSourceRegistrationStats measurementDelayedSourceRegistrationStats); 130 131 /** Logs measurement click verification stats. */ logMeasurementClickVerificationStats( MeasurementClickVerificationStats measurementClickVerificationStats)132 void logMeasurementClickVerificationStats( 133 MeasurementClickVerificationStats measurementClickVerificationStats); 134 135 /** Logs measurement ODP registrations. */ logMeasurementOdpRegistrations(MeasurementOdpRegistrationStats stats)136 void logMeasurementOdpRegistrations(MeasurementOdpRegistrationStats stats); 137 138 /** Logs measurement ODP API calls. */ logMeasurementOdpApiCall(MeasurementOdpApiCallStats stats)139 void logMeasurementOdpApiCall(MeasurementOdpApiCallStats stats); 140 141 /** Logs enrollment data stats. */ logEnrollmentDataStats(int mType, boolean mIsSuccessful, int mBuildId)142 void logEnrollmentDataStats(int mType, boolean mIsSuccessful, int mBuildId); 143 144 /** Logs enrollment matching stats. */ logEnrollmentMatchStats(boolean mIsSuccessful, int mBuildId)145 void logEnrollmentMatchStats(boolean mIsSuccessful, int mBuildId); 146 147 /** Logs enrollment file download stats. */ logEnrollmentFileDownloadStats(boolean mIsSuccessful, int mBuildId)148 void logEnrollmentFileDownloadStats(boolean mIsSuccessful, int mBuildId); 149 150 /** Logs enrollment failure stats. */ logEnrollmentFailedStats( int mBuildId, int mDataFileGroupStatus, int mEnrollmentRecordCountInTable, String mQueryParameter, int mErrorCause)151 void logEnrollmentFailedStats( 152 int mBuildId, 153 int mDataFileGroupStatus, 154 int mEnrollmentRecordCountInTable, 155 String mQueryParameter, 156 int mErrorCause); 157 158 /** Logs enrollment transaction stats. */ logEnrollmentTransactionStats(AdServicesEnrollmentTransactionStats stats)159 void logEnrollmentTransactionStats(AdServicesEnrollmentTransactionStats stats); 160 161 /** Logs encryption key fetch stats. */ logEncryptionKeyFetchedStats(AdServicesEncryptionKeyFetchedStats stats)162 void logEncryptionKeyFetchedStats(AdServicesEncryptionKeyFetchedStats stats); 163 164 /** Logs encryption key datastore transaction ended stats. */ logEncryptionKeyDbTransactionEndedStats( AdServicesEncryptionKeyDbTransactionEndedStats stats)165 void logEncryptionKeyDbTransactionEndedStats( 166 AdServicesEncryptionKeyDbTransactionEndedStats stats); 167 168 /** Logs destinationRegisteredBeacon reported stats. */ logDestinationRegisteredBeaconsReportedStats( DestinationRegisteredBeaconsReportedStats stats)169 void logDestinationRegisteredBeaconsReportedStats( 170 DestinationRegisteredBeaconsReportedStats stats); 171 172 /** Logs beacon level reporting for ReportInteraction API called stats. */ logReportInteractionApiCalledStats(ReportInteractionApiCalledStats stats)173 void logReportInteractionApiCalledStats(ReportInteractionApiCalledStats stats); 174 175 /** Logs beacon level reporting for clearing interaction reporting table stats. */ logInteractionReportingTableClearedStats(InteractionReportingTableClearedStats stats)176 void logInteractionReportingTableClearedStats(InteractionReportingTableClearedStats stats); 177 178 /** Logs call to {@link AppManifestConfigHelper} to check if app is allowed to access an API. */ logAppManifestConfigCall(AppManifestConfigCall call)179 void logAppManifestConfigCall(AppManifestConfigCall call); 180 181 /** Logs status for {@link com.android.adservices.service.kanon.KAnonSignJoinManager}. */ logKAnonSignJoinStatus()182 void logKAnonSignJoinStatus(); 183 184 /** 185 * Logs status for initialize method for {@link 186 * com.android.adservices.service.kanon.KAnonCaller}. 187 */ logKAnonInitializeStats(KAnonInitializeStatusStats kAnonInitializeStatusStats)188 void logKAnonInitializeStats(KAnonInitializeStatusStats kAnonInitializeStatusStats); 189 190 /** Logs status for sign method for {@link com.android.adservices.service.kanon.KAnonCaller */ logKAnonSignStats(KAnonSignStatusStats kAnonSignStatusStats)191 void logKAnonSignStats(KAnonSignStatusStats kAnonSignStatusStats); 192 193 /** Logs status for join method for {@link com.android.adservices.service.kanon.KAnonCaller} */ logKAnonJoinStats(KAnonJoinStatusStats kAnonJoinStatusStats)194 void logKAnonJoinStats(KAnonJoinStatusStats kAnonJoinStatusStats); 195 196 /** 197 * Logs status for {@link 198 * com.android.adservices.service.kanon.KAnonSignJoinBackgroundJobService} 199 */ logKAnonBackgroundJobStats(KAnonBackgroundJobStatusStats kAnonBackgroundJobStatusStats)200 void logKAnonBackgroundJobStats(KAnonBackgroundJobStatusStats kAnonBackgroundJobStatusStats); 201 202 /** 203 * Logs status for immediate sign join in {@link 204 * com.android.adservices.service.kanon.KAnonSignJoinManager} 205 */ logKAnonImmediateSignJoinStats( KAnonImmediateSignJoinStatusStats kAnonImmediateSignJoinStatusStats)206 void logKAnonImmediateSignJoinStats( 207 KAnonImmediateSignJoinStatusStats kAnonImmediateSignJoinStatusStats); 208 209 /** Logs status for get challenge method during kAnon sign join process. */ logKAnonGetChallengeJobStats(KAnonGetChallengeStatusStats kAnonGetChallengeStatusStats)210 void logKAnonGetChallengeJobStats(KAnonGetChallengeStatusStats kAnonGetChallengeStatusStats); 211 212 /** Logs stats for GetAdSelectionDataApiCalled */ logGetAdSelectionDataApiCalledStats(GetAdSelectionDataApiCalledStats stats)213 void logGetAdSelectionDataApiCalledStats(GetAdSelectionDataApiCalledStats stats); 214 215 /** Logs stats for GetAdSelectionDataBuyerInputGenerated */ logGetAdSelectionDataBuyerInputGeneratedStats( GetAdSelectionDataBuyerInputGeneratedStats stats)216 void logGetAdSelectionDataBuyerInputGeneratedStats( 217 GetAdSelectionDataBuyerInputGeneratedStats stats); 218 219 /** Logs AdFilteringProcessJoinCAReported stats. */ logAdFilteringProcessJoinCAReportedStats(AdFilteringProcessJoinCAReportedStats stats)220 void logAdFilteringProcessJoinCAReportedStats(AdFilteringProcessJoinCAReportedStats stats); 221 222 /** Logs AdFilteringProcessAdSelectionReported stats. */ logAdFilteringProcessAdSelectionReportedStats( AdFilteringProcessAdSelectionReportedStats stats)223 void logAdFilteringProcessAdSelectionReportedStats( 224 AdFilteringProcessAdSelectionReportedStats stats); 225 226 /** Logs AdCounterHistogramUpdaterReported stats. */ logAdCounterHistogramUpdaterReportedStats(AdCounterHistogramUpdaterReportedStats stats)227 void logAdCounterHistogramUpdaterReportedStats(AdCounterHistogramUpdaterReportedStats stats); 228 229 /** Logs TopicsEncryptionEpochComputationReported stats. */ logTopicsEncryptionEpochComputationReportedStats( TopicsEncryptionEpochComputationReportedStats stats)230 void logTopicsEncryptionEpochComputationReportedStats( 231 TopicsEncryptionEpochComputationReportedStats stats); 232 233 /** Logs TopicsEncryptionGetTopicsReported stats */ logTopicsEncryptionGetTopicsReportedStats( TopicsEncryptionGetTopicsReportedStats stats)234 void logTopicsEncryptionGetTopicsReportedStats( 235 TopicsEncryptionGetTopicsReportedStats stats); 236 237 /** Logs stats for shell command indicating success/failure, latency. */ logShellCommandStats(ShellCommandStats stats)238 void logShellCommandStats(ShellCommandStats stats); 239 240 /** 241 * Logs stats for signature verification for {@link 242 * android.adservices.adselection.SignedContextualAds} during on-device ad selection auction 243 */ logSignatureVerificationStats(SignatureVerificationStats stats)244 void logSignatureVerificationStats(SignatureVerificationStats stats); 245 246 /** Logs stats for EncodingFetchStats */ logEncodingJsFetchStats(EncodingFetchStats stats)247 void logEncodingJsFetchStats(EncodingFetchStats stats); 248 249 /** Logs stats for ServerAuctionBackgroundKeyFetchScheduled */ logServerAuctionBackgroundKeyFetchScheduledStats( ServerAuctionBackgroundKeyFetchScheduledStats stats)250 void logServerAuctionBackgroundKeyFetchScheduledStats( 251 ServerAuctionBackgroundKeyFetchScheduledStats stats); 252 253 /** Logs stats for UpdateSignalsApiCalledStats */ logEncodingJsExecutionStats(EncodingJsExecutionStats stats)254 void logEncodingJsExecutionStats(EncodingJsExecutionStats stats); 255 256 /** Logs stats for ServerAuctionKeyFetchCalled */ logServerAuctionKeyFetchCalledStats(ServerAuctionKeyFetchCalledStats stats)257 void logServerAuctionKeyFetchCalledStats(ServerAuctionKeyFetchCalledStats stats); 258 259 /** Logs stats for EncodingJobRunStats */ logEncodingJobRunStats(EncodingJobRunStats stats)260 void logEncodingJobRunStats(EncodingJobRunStats stats); 261 262 /** Logs stats for UpdateSignalsProcessReportedStats. */ logUpdateSignalsProcessReportedStats(UpdateSignalsProcessReportedStats stats)263 void logUpdateSignalsProcessReportedStats(UpdateSignalsProcessReportedStats stats); 264 265 /** Logs stats for PersistAdSelectionResultCalledStats */ logPersistAdSelectionResultCalledStats(PersistAdSelectionResultCalledStats stats)266 void logPersistAdSelectionResultCalledStats(PersistAdSelectionResultCalledStats stats); 267 268 /** Logs stats for SelectAdsFromOutcomesApiCalledStats */ logSelectAdsFromOutcomesApiCalledStats(SelectAdsFromOutcomesApiCalledStats stats)269 void logSelectAdsFromOutcomesApiCalledStats(SelectAdsFromOutcomesApiCalledStats stats); 270 271 /** Logs stats for ReportImpressionApiCalledStats */ logReportImpressionApiCalledStats(ReportImpressionApiCalledStats stats)272 void logReportImpressionApiCalledStats(ReportImpressionApiCalledStats stats); 273 274 /** Logs stats for UpdateSignalsApiCalledStats */ logUpdateSignalsApiCalledStats(UpdateSignalsApiCalledStats stats)275 void logUpdateSignalsApiCalledStats(UpdateSignalsApiCalledStats stats); 276 277 /** Logs stats for TopicsScheduleEpochJobSettingReportedStats */ logTopicsScheduleEpochJobSettingReportedStats( TopicsScheduleEpochJobSettingReportedStats stats)278 void logTopicsScheduleEpochJobSettingReportedStats( 279 TopicsScheduleEpochJobSettingReportedStats stats); 280 281 /** Logs stats for ScheduledCustomAudienceUpdatePerformedStats */ logScheduledCustomAudienceUpdatePerformedStats( ScheduledCustomAudienceUpdatePerformedStats stats)282 void logScheduledCustomAudienceUpdatePerformedStats( 283 ScheduledCustomAudienceUpdatePerformedStats stats); 284 285 /** Logs stats for ScheduledCustomAudienceUpdateBackgroundJobStats */ logScheduledCustomAudienceUpdateBackgroundJobStats( ScheduledCustomAudienceUpdateBackgroundJobStats stats)286 void logScheduledCustomAudienceUpdateBackgroundJobStats( 287 ScheduledCustomAudienceUpdateBackgroundJobStats stats); 288 289 /** Logs stats for ScheduledCustomAudienceUpdateScheduleAttemptedStats */ logScheduledCustomAudienceUpdateScheduleAttemptedStats( ScheduledCustomAudienceUpdateScheduleAttemptedStats stats)290 void logScheduledCustomAudienceUpdateScheduleAttemptedStats( 291 ScheduledCustomAudienceUpdateScheduleAttemptedStats stats); 292 293 /** Logs stats for ScheduledCustomAudienceUpdatePerformedFailure */ logScheduledCustomAudienceUpdatePerformedFailureStats( ScheduledCustomAudienceUpdatePerformedFailureStats stats)294 void logScheduledCustomAudienceUpdatePerformedFailureStats( 295 ScheduledCustomAudienceUpdatePerformedFailureStats stats); 296 297 /** Logs stats for NumberOfTypesOfReportingUrlsReceivedStats */ logNumberOfTypesOfReportingUrlsReceivedStats( NumberOfTypesOfReportingUrlsReceivedStats stats)298 void logNumberOfTypesOfReportingUrlsReceivedStats( 299 NumberOfTypesOfReportingUrlsReceivedStats stats); 300 301 /** Logs stats for ReportingWithDestinationPerformedStats */ logReportingWithDestinationPerformedStats(ReportingWithDestinationPerformedStats stats)302 void logReportingWithDestinationPerformedStats(ReportingWithDestinationPerformedStats stats); 303 } 304