/* * 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.server.usage; import "frameworks/base/core/proto/android/content/configuration.proto"; import "frameworks/base/core/proto/android/privacy.proto"; option java_multiple_files = true; /** * Obfuscated version of android.service.IntervalStatsProto (usagestatsservice.proto). */ message IntervalStatsObfuscatedProto { message CountAndTime { optional int32 count = 1; optional int64 time_ms = 2; } // Stores the relevant information an IntervalStats will have about a Configuration message Configuration { optional .android.content.ConfigurationProto config = 1; optional int64 last_time_active_ms = 2; optional int64 total_time_active_ms = 3; optional int32 count = 4; optional bool active = 5; } // Stores the information of last time a package is used by any users message PackageUsage { optional string package_name = 1; optional int64 time_ms = 2; } // The following fields contain supplemental data used to build IntervalStats. optional int64 end_time_ms = 1; optional int32 major_version = 2; optional int32 minor_version = 3; // The following fields contain aggregated usage stats data optional CountAndTime interactive = 10; optional CountAndTime non_interactive = 11; optional CountAndTime keyguard_shown = 12; optional CountAndTime keyguard_hidden = 13; // The following fields contain listed usage stats data repeated UsageStatsObfuscatedProto packages = 20; repeated Configuration configurations = 21; repeated EventObfuscatedProto event_log = 22; // The following field is only used to persist the reported events before a user unlock repeated PendingEventProto pending_events = 23; // The following field is only used to persist the user-agnostic package usage before shut down repeated PackageUsage package_usage = 24; } /** * Stores the relevant information from an obfuscated UsageStats. */ message UsageStatsObfuscatedProto { message ChooserAction { message CategoryCount { optional int32 category_token = 1; optional int32 count = 2; } optional int32 action_token = 1; repeated CategoryCount counts = 2; } optional int32 package_token = 1; optional int64 last_time_active_ms = 3; optional int64 total_time_active_ms = 4; optional int32 last_event = 5; optional int32 app_launch_count = 6; repeated ChooserAction chooser_actions = 7; optional int64 last_time_service_used_ms = 8; optional int64 total_time_service_used_ms = 9; optional int64 last_time_visible_ms = 10; optional int64 total_time_visible_ms = 11; optional int64 last_time_component_used_ms = 12; } /** * Stores the relevant information from an obfuscated Event. */ message EventObfuscatedProto { optional int32 package_token = 1; optional int32 class_token = 2; optional int64 time_ms = 3; optional int32 flags = 4; optional int32 type = 5; optional .android.content.ConfigurationProto config = 6; optional int32 shortcut_id_token = 7; optional int32 standby_bucket = 8; optional int32 notification_channel_id_token = 9; optional int32 instance_id = 10; optional int32 task_root_package_token = 11; optional int32 task_root_class_token = 12; optional int32 locus_id_token = 13; optional ObfuscatedUserInteractionExtrasProto interaction_extras = 14; } /** * This message stores all of the fields in an Event object as strings instead of tokens. */ message PendingEventProto { optional string package_name = 1; optional string class_name = 2; optional int64 time_ms = 3; optional int32 flags = 4; optional int32 type = 5; optional .android.content.ConfigurationProto config = 6; optional string shortcut_id = 7 [(.android.privacy).dest = DEST_EXPLICIT]; optional int32 standby_bucket = 8; optional string notification_channel_id = 9 [(.android.privacy).dest = DEST_EXPLICIT]; optional int32 instance_id = 10; optional string task_root_package = 11; optional string task_root_class = 12; optional string locus_id = 13 [(.android.privacy).dest = DEST_EXPLICIT]; optional bytes extras = 14; } /** * A proto message representing the obfuscated tokens mappings for Usage Stats. */ message ObfuscatedPackagesProto { message PackagesMap { optional int32 package_token = 1; // The list of strings for each package where their indices are the token repeated string strings = 2 [(.android.privacy).dest = DEST_EXPLICIT]; } optional int32 counter = 1; // Stores the mappings for every package repeated PackagesMap packages_map = 2; } /** * Store the relevant information from extra details for user interaction event. */ message ObfuscatedUserInteractionExtrasProto { optional int32 category_token = 1; optional int32 action_token = 2; }