1 /* 2 * Copyright (C) 2018 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.google.android.setupcompat.logging.internal; 18 19 import android.content.Context; 20 import androidx.annotation.IntDef; 21 import androidx.annotation.StringDef; 22 import com.google.android.setupcompat.logging.MetricKey; 23 import java.lang.annotation.Retention; 24 import java.lang.annotation.RetentionPolicy; 25 26 /** Constant values used by {@link com.google.android.setupcompat.logging.SetupMetricsLogger}. */ 27 public interface SetupMetricsLoggingConstants { 28 29 /** Enumeration of supported metric types logged to SetupWizard. */ 30 @Retention(RetentionPolicy.SOURCE) 31 @IntDef({MetricType.CUSTOM_EVENT, MetricType.COUNTER_EVENT, MetricType.DURATION_EVENT}) 32 @interface MetricType { 33 /** 34 * MetricType constant used when logging {@link 35 * com.google.android.setupcompat.logging.CustomEvent}. 36 */ 37 int CUSTOM_EVENT = 1; 38 /** 39 * MetricType constant used when logging {@link com.google.android.setupcompat.logging.Timer}. 40 */ 41 int DURATION_EVENT = 2; 42 43 /** 44 * MetricType constant used when logging counter value using {@link 45 * com.google.android.setupcompat.logging.SetupMetricsLogger#logCounter(Context, MetricKey, 46 * int)}. 47 */ 48 int COUNTER_EVENT = 3; 49 50 /** MetricType constant used for internal logging purposes. */ 51 int INTERNAL = 100; 52 } 53 54 /** Keys of the bundle used while logging data to SetupWizard. */ 55 @Retention(RetentionPolicy.SOURCE) 56 @StringDef({ 57 MetricBundleKeys.METRIC_KEY, 58 MetricBundleKeys.METRIC_KEY_BUNDLE, 59 MetricBundleKeys.CUSTOM_EVENT, 60 MetricBundleKeys.CUSTOM_EVENT_BUNDLE, 61 MetricBundleKeys.TIME_MILLIS_LONG, 62 MetricBundleKeys.COUNTER_INT 63 }) 64 @interface MetricBundleKeys { 65 /** 66 * {@link MetricKey} of the data being logged. This will be set when {@code metricType} is 67 * either {@link MetricType#COUNTER_EVENT} or {@link MetricType#DURATION_EVENT}. 68 * 69 * @deprecated Use {@link #METRIC_KEY_BUNDLE} instead. 70 */ 71 @Deprecated String METRIC_KEY = "MetricKey"; 72 73 /** 74 * This key will be used when {@code metricType} is {@link MetricType#CUSTOM_EVENT} with the 75 * value being a parcelable of type {@link com.google.android.setupcompat.logging.CustomEvent}. 76 * 77 * @deprecated Use {@link #CUSTOM_EVENT_BUNDLE} instead. 78 */ 79 @Deprecated String CUSTOM_EVENT = "CustomEvent"; 80 81 /** 82 * This key will be set when {@code metricType} is {@link MetricType#DURATION_EVENT} with the 83 * value of type {@code long} representing the {@code duration} in milliseconds for the given 84 * {@link MetricKey}. 85 */ 86 String TIME_MILLIS_LONG = "timeMillis"; 87 88 /** 89 * This key will be set when {@code metricType} is {@link MetricType#COUNTER_EVENT} with the 90 * value of type {@code int} representing the {@code counter} value logged for the given {@link 91 * MetricKey}. 92 */ 93 String COUNTER_INT = "counter"; 94 95 /** 96 * {@link MetricKey} of the data being logged. This will be set when {@code metricType} is 97 * either {@link MetricType#COUNTER_EVENT} or {@link MetricType#DURATION_EVENT}. 98 */ 99 String METRIC_KEY_BUNDLE = "MetricKey_bundle"; 100 101 /** 102 * This key will be used when {@code metricType} is {@link MetricType#CUSTOM_EVENT} with the 103 * value being a Bundle which can be used to read {@link 104 * com.google.android.setupcompat.logging.CustomEvent}. 105 */ 106 String CUSTOM_EVENT_BUNDLE = "CustomEvent_bundle"; 107 } 108 } 109