/*
 * Copyright (C) 2019 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 com.android.managedprovisioning;
option java_package = "com.android.managedprovisioning";
option java_outer_classname = "DevicePolicyProtos";

// Copied from frameworks/base/cmds/statsd/src/atoms.proto
// Both proto files must be kept in sync.
message DevicePolicyEvent {
  // The event id - unique for each event.
  optional int32 event_id = 1;
  // The admin package name.
  optional string admin_package_name = 2;
  // A generic integer parameter.
  optional int32 integer_value = 3;
  // A generic boolean parameter.
  optional bool boolean_value = 4;
  // A parameter specifying a time period in milliseconds.
  optional uint64 time_period_millis = 5;
  // A parameter specifying a list of package names, bundle extras or string parameters.
  repeated string string_list_value = 6;
}