| /* |
| * Copyright (C) 2023 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| syntax = "proto2"; |
| |
| package android.os.statsd.adservices; |
| |
| import "frameworks/proto_logging/stats/atoms.proto"; |
| import "frameworks/proto_logging/stats/atom_field_options.proto"; |
| |
| option java_package = "com.android.os.adservices"; |
| option java_multiple_files = true; |
| |
| extend Atom { |
| optional AdServicesBackCompatGetTopicsReported |
| ad_services_back_compat_get_topics_reported = 598 |
| [(module) = "adservices", (truncate_timestamp) = true]; |
| |
| optional AdServicesBackCompatEpochComputationClassifierReported |
| ad_services_back_compat_epoch_computation_classifier_reported = 599 |
| [(module) = "adservices", (truncate_timestamp) = true]; |
| optional AdServicesMeasurementDebugKeys |
| ad_services_measurement_debug_keys = 640 |
| [(module) = "adservices", (truncate_timestamp) = true]; |
| optional AdServicesErrorReported |
| ad_services_error_reported = 662 |
| [(module) = "adservices", (truncate_timestamp) = true]; |
| } |
| |
| /** |
| * Represents a list of topic IDs. |
| */ |
| message AdServicesTopicIds { |
| repeated int32 topic_id = 1; |
| } |
| |
| /** |
| * Logs for AdServices GetTopics API call on R+. |
| * This atom closely mimics AdServicesGetTopicsReported (for T+ logging) and |
| * avoids usage of field types (e.g. repeated) that aren't supported on R/S. |
| */ |
| message AdServicesBackCompatGetTopicsReported { |
| // See b/266626836 for why topic_ids is not a field yet. |
| |
| // Number of filtered duplicate topics. |
| optional int32 duplicate_topic_count = 1; |
| |
| // Number of filtered blocked topics. |
| optional int32 filtered_blocked_topic_count = 2; |
| |
| // Number of topic ids returned. |
| optional int32 count_of_topic_ids = 3; |
| } |
| |
| /** |
| * Logs for AdServices Epoch Computation Classifier on R+. |
| * One atom should be logged for each app classification. |
| * This atom closely mimics AdServicesEpochComputationClassifierReported (for T+ logging) |
| * and avoids usage of field types (e.g. repeated) that can't be supported on R/S. |
| */ |
| message AdServicesBackCompatEpochComputationClassifierReported { |
| // List of topics returned by the classifier for each app. The classification |
| // does not depend on the user's usage of the app. |
| optional AdServicesTopicIds topic_ids = 1 [(log_mode) = MODE_BYTES]; |
| |
| // Build id of the assets. |
| optional int32 build_id = 2; |
| |
| // Version of the assets used. |
| optional string asset_version = 3; |
| |
| // Type of the classifier used for classifying apps. |
| enum ClassifierType { |
| /** Unknown classifier option. */ |
| UNKNOWN_CLASSIFIER = 0; |
| /** Only on-device classification. */ |
| ON_DEVICE_CLASSIFIER = 1; |
| /** Only Precomputed classification. */ |
| PRECOMPUTED_CLASSIFIER = 2; |
| /** Precomputed classification values are preferred over on-device classification values. */ |
| PRECOMPUTED_THEN_ON_DEVICE_CLASSIFIER = 3; |
| } |
| optional ClassifierType classifier_type = 4; |
| |
| // On Device classifier status. |
| enum OnDeviceClassifierStatus { |
| ON_DEVICE_CLASSIFIER_STATUS_UNSPECIFIED = 0; |
| ON_DEVICE_CLASSIFIER_STATUS_NOT_INVOKED = 1; |
| ON_DEVICE_CLASSIFIER_STATUS_SUCCESS = 2; |
| ON_DEVICE_CLASSIFIER_STATUS_FAILURE = 3; |
| } |
| optional OnDeviceClassifierStatus on_device_classifier_status = 5; |
| |
| // Precomputed classifier status. |
| enum PrecomputedClassifierStatus { |
| PRECOMPUTED_CLASSIFIER_STATUS_UNSPECIFIED = 0; |
| PRECOMPUTED_CLASSIFIER_STATUS_NOT_INVOKED = 1; |
| PRECOMPUTED_CLASSIFIER_STATUS_SUCCESS = 2; |
| PRECOMPUTED_CLASSIFIER_STATUS_FAILURE = 3; |
| } |
| optional PrecomputedClassifierStatus precomputed_classifier_status = 6; |
| } |
| |
| /** |
| * Logs debug keys match state when measurement reports are being generated. |
| */ |
| message AdServicesMeasurementDebugKeys { |
| enum AttributionType { |
| UNKNOWN = 0; |
| APP_APP = 1; |
| APP_WEB = 2; |
| WEB_APP = 3; |
| WEB_WEB = 4; |
| } |
| |
| optional string adtech_enrollment_id = 1; |
| optional AttributionType attribution_type = 2; |
| optional bool is_matched = 3; |
| optional int64 join_key_hash = 4; |
| optional int64 join_key_hash_limit = 5; |
| } |
| |
| /** |
| * Logs AdServices errors/exceptions. |
| */ |
| message AdServicesErrorReported { |
| // Enum representing an error/exception. These errors can be common to all |
| // PPAPIs or specific to a particular API. We will group enums in blocks of |
| // 1000 like this below: |
| // - Common errors: 1-1000 |
| // - Topics errors: 1001-2000 |
| // - Measurement errors: 2001-3000 |
| // - Fledge errors: 3001-4000 |
| // - UX errors: 4001-5000 |
| enum ErrorCode { |
| ERROR_CODE_UNSPECIFIED = 0; |
| DATABASE_READ_EXCEPTION = 1; |
| DATABASE_WRITE_EXCEPTION = 2; |
| API_REMOTE_EXCEPTION = 3; |
| |
| // UX errors |
| CONSENT_REVOKED_ERROR = 4001; |
| } |
| // Enum representing an error/exception. |
| optional ErrorCode error_code = 1; |
| |
| enum PpapiName { |
| PPAPI_NAME_UNSPECIFIED = 0; |
| TOPICS = 1; |
| MEASUREMENT = 2; |
| FLEDGE = 3; |
| } |
| // Name of the PPAPI if possible where error is occurring. |
| optional PpapiName ppapi_name = 2; |
| |
| // Name of the class where we catch the exception or log the error. |
| optional string class_name = 3; |
| |
| // Name of the method where we catch the exception or log the error. |
| optional string method_name = 4; |
| |
| // Line number where we catch the exception or log the error. |
| optional int32 line_number = 5; |
| |
| // The fully qualified name of the last encountered exception. |
| optional string last_observed_exception_name = 6; |
| } |