chromium/chrome/browser/android/browserservices/metrics/java/src/org/chromium/chrome/browser/browserservices/metrics/OriginVerifierMetricsRecorder.java

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.chrome.browser.browserservices.metrics;

import androidx.annotation.IntDef;

import org.chromium.base.metrics.RecordHistogram;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/** Class to record Uma related to Origin Verifier */
public class OriginVerifierMetricsRecorder {
    @IntDef({
        VerificationResult.ONLINE_SUCCESS,
        VerificationResult.ONLINE_FAILURE,
        VerificationResult.OFFLINE_SUCCESS,
        VerificationResult.OFFLINE_FAILURE,
        VerificationResult.HTTPS_FAILURE,
        VerificationResult.REQUEST_FAILURE,
        VerificationResult.CACHED_SUCCESS
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface VerificationResult {
        // Don't reuse values or reorder values. If you add something new, change NUM_ENTRIES as
        // well.
        int ONLINE_SUCCESS = 0;
        int ONLINE_FAILURE = 1;
        int OFFLINE_SUCCESS = 2;
        int OFFLINE_FAILURE = 3;
        int HTTPS_FAILURE = 4;
        int REQUEST_FAILURE = 5;
        int CACHED_SUCCESS = 6;
        int NUM_ENTRIES = 7;
    }

    public static void recordVerificationResult(@VerificationResult int result) {
        RecordHistogram.recordEnumeratedHistogram(
                "BrowserServices.VerificationResult", result, VerificationResult.NUM_ENTRIES);
    }

    public static void recordVerificationTime(long duration, boolean online) {
        if (online) {
            RecordHistogram.recordTimesHistogram(
                    "BrowserServices.VerificationTime.Online", duration);
        } else {
            RecordHistogram.recordTimesHistogram(
                    "BrowserServices.VerificationTime.Offline", duration);
        }
    }

    private OriginVerifierMetricsRecorder() {}
}