| /* |
| * 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 android.util.quota; |
| |
| option java_multiple_files = true; |
| |
| import "frameworks/base/core/proto/android/privacy.proto"; |
| |
| // A com.android.util.quota.QuotaTracker object. |
| message QuotaTrackerProto { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| optional bool is_enabled = 1; |
| |
| // If quota is free for everything in the tracker. |
| optional bool is_global_quota_free = 2; |
| |
| // Current elapsed realtime. |
| optional int64 elapsed_realtime = 3; |
| |
| message InQuotaAlarmListener { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| // The time at which the alarm is set to go off, in the elapsed realtime timebase. |
| optional int64 trigger_time_elapsed = 1; |
| |
| message Alarm { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| optional UptcProto uptc = 1; |
| |
| // The time at which the UPTC will be in quota, in the elapsed realtime timebase. |
| optional int64 in_quota_time_elapsed = 2; |
| } |
| repeated Alarm alarms = 2; |
| } |
| optional InQuotaAlarmListener in_quota_alarm_listener = 4; |
| |
| // Next tag: 5 |
| } |
| |
| // A com.android.util.quota.Category object. |
| message CategoryProto { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| // Name of the category set by the system service. |
| optional string name = 1; |
| } |
| |
| // A com.android.util.quota.Uptc object. |
| message UptcProto { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| // UserHandle value. Should be 0, 10, 11, 12, etc. where 0 is the owner. |
| optional int32 user_id = 1; |
| // Package name |
| optional string name = 2; |
| // Tag set by the system service to differentiate calls. |
| optional string tag = 3; |
| } |
| |
| // A com.android.util.quota.CountQuotaTracker object. |
| message CountQuotaTrackerProto { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| optional QuotaTrackerProto base_quota_data = 1; |
| |
| message CountLimit { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| optional CategoryProto category = 1; |
| optional int32 limit = 2; |
| optional int64 window_size_ms = 3; |
| } |
| repeated CountLimit count_limit = 2; |
| |
| message Event { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| // The time the event occurred, in the elapsed realtime timebase. |
| optional int64 timestamp_elapsed = 1; |
| } |
| |
| message ExecutionStats { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| // The time after which this record should be considered invalid (out of date), in the |
| // elapsed realtime timebase. |
| optional int64 expiration_time_elapsed = 1; |
| |
| optional int64 window_size_ms = 2; |
| optional int32 count_limit = 3; |
| |
| // The total number of events that occurred in the window. |
| optional int32 count_in_window = 4; |
| |
| // The time after which the app will be under the bucket quota. This is only valid if |
| // count_in_window >= count_limit. |
| optional int64 in_quota_time_elapsed = 5; |
| } |
| |
| message UptcStats { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| optional UptcProto uptc = 1; |
| |
| // True if the UPTC has been given free quota. |
| optional bool is_quota_free = 2; |
| |
| repeated Event events = 3; |
| |
| repeated ExecutionStats execution_stats = 4; |
| } |
| repeated UptcStats uptc_stats = 3; |
| |
| // Next tag: 4 |
| } |
| |
| // A com.android.util.quota.DurationQuotaTracker object. |
| message DurationQuotaTrackerProto { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| optional QuotaTrackerProto base_quota_data = 1; |
| |
| message DurationLimit { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| optional CategoryProto category = 1; |
| optional int64 limit_ms = 2; |
| optional int64 window_size_ms = 3; |
| } |
| repeated DurationLimit duration_limit = 2; |
| |
| message ExecutionStats { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| // The time after which this record should be considered invalid (out of date), in the |
| // elapsed realtime timebase. |
| optional int64 expiration_time_elapsed = 1; |
| |
| optional int32 window_size_ms = 2; |
| optional int64 duration_limit_ms = 3; |
| |
| // The overall session duration in the window. |
| optional int64 session_duration_in_window_ms = 4; |
| // The number of individual long-running events in the window. |
| optional int32 event_count_in_window = 5; |
| |
| // The time after which the app will be under the bucket quota. This is only valid if |
| // session_duration_in_window_ms >= duration_limit_ms. |
| optional int64 in_quota_time_elapsed = 6; |
| } |
| |
| message Timer { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| // True if the Timer is actively tracking long-running events. |
| optional bool is_active = 1; |
| // The time this timer last became active. Only valid if is_active is true. |
| optional int64 start_time_elapsed = 2; |
| // How many long-running events are currently running. Valid only if is_active is true. |
| optional int32 event_count = 3; |
| } |
| |
| message TimingSession { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| optional int64 start_time_elapsed = 1; |
| optional int64 end_time_elapsed = 2; |
| // How many events started during this session. This only count long-running events, not |
| // instantaneous events. |
| optional int32 event_count = 3; |
| } |
| |
| message UptcStats { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| optional UptcProto uptc = 1; |
| |
| // True if the UPTC has been given free quota. |
| optional bool is_quota_free = 2; |
| |
| optional Timer timer = 3; |
| |
| repeated TimingSession saved_sessions = 4; |
| |
| repeated ExecutionStats execution_stats = 5; |
| } |
| repeated UptcStats uptc_stats = 3; |
| |
| message ReachedQuotaAlarmListener { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| optional int64 trigger_time_elapsed = 1; |
| |
| message UptcTimes { |
| option (.android.msg_privacy).dest = DEST_AUTOMATIC; |
| |
| optional UptcProto uptc = 1; |
| optional int64 out_of_quota_time_elapsed = 2; |
| } |
| repeated UptcTimes uptc_times = 2; |
| } |
| optional ReachedQuotaAlarmListener reached_quota_alarm_listener = 4; |
| |
| // Next tag: 5 |
| } |