/*
 * Copyright (C) 2025 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.libcore;

import "frameworks/proto_logging/stats/atoms.proto";
import "frameworks/proto_logging/stats/atom_field_options.proto";

option java_package = "com.android.os.libcore";

extend Atom {
    optional RuntimeUnsafeDclReported runtime_unsafe_dcl_reported = 1179 [(module) = "libcore"];
}

/**
 * [Pushed atom] Logged when an unsafe DCL is detected by Runtime.
 *
 * Pushed from:
 *   libcore/ojluni/src/main/java/java/lang/Runtime.java#load0
 * Estimated Logging Rate:
 *  Peak: 10 times per device per day.
 *  Avg: 0 times per device per day.*/
message RuntimeUnsafeDclReported {
    // The uid of the app that was loading the unsafe DCL.
    optional int32 uid = 1 [(is_uid) = true];

    // The class name of the class that was loading an unsafe DCL.
    optional string java_package_name = 2;

    // The name of the file that was loaded and considered unsafe. The file is not readonly.
    optional string library_name = 3;
}
