1426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P/*
2426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P * Copyright (C) 2017 The Android Open Source Project
3426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P *
4426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P * Licensed under the Apache License, Version 2.0 (the "License");
5426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P * you may not use this file except in compliance with the License.
6426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P * You may obtain a copy of the License at
7426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P *
8426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P *      http://www.apache.org/licenses/LICENSE-2.0
9426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P *
10426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P * Unless required by applicable law or agreed to in writing, software
11426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P * distributed under the License is distributed on an "AS IS" BASIS,
12426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P * See the License for the specific language governing permissions and
14426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P * limitations under the License.
15426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P */
16426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P
17c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jinsyntax = "proto2";
18426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta Ppackage android.service.pm;
19426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P
20d6759d46f96fe2c8955751b0fe8037d6c8a75464Yi Jinimport "frameworks/base/core/proto/android/content/featureinfo.proto";
210d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jinimport "frameworks/base/libs/incident/proto/android/privacy.proto";
22d6759d46f96fe2c8955751b0fe8037d6c8a75464Yi Jin
23426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta Poption java_multiple_files = true;
24426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta Poption java_outer_classname = "PackageServiceProto";
25426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P
26426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta Pmessage PackageServiceDumpProto {
270d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin    option (android.msg_privacy).dest = DEST_AUTOMATIC;
280d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin
29426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    message PackageShortProto {
300d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin        option (android.msg_privacy).dest = DEST_AUTOMATIC;
310d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin
32426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P        // Name of package. e.g. "com.android.providers.telephony".
33c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional string name = 1;
34426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P        // UID for this package as assigned by Android OS.
35c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional int32 uid = 2;
36426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    }
37426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    message SharedLibraryProto {
380d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin        option (android.msg_privacy).dest = DEST_AUTOMATIC;
390d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin
40c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional string name = 1;
41426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P        // True if library path is not null (jar), false otherwise (apk)
42c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional bool is_jar = 2;
43426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P        // Should be filled if is_jar is true
44c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional string path = 3;
45426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P        // Should be filled if is_jar is false
46c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional string apk = 4;
47426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    }
48426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    message SharedUserProto {
490d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin        option (android.msg_privacy).dest = DEST_AUTOMATIC;
500d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin
51c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional int32 user_id = 1;
5230c1ce2e576c1dc48a6e96603c29b95d52996a60Kweku Adams        // Name of the shared UID. eg: android.uid.bluetooth
5330c1ce2e576c1dc48a6e96603c29b95d52996a60Kweku Adams        optional string name = 2;
54426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    }
55426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P
56426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    // Installed packages.
57c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin    optional PackageShortProto required_verifier_package = 1;
58c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin    optional PackageShortProto verifier_package = 2;
59426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    repeated SharedLibraryProto shared_libraries = 3;
60d6759d46f96fe2c8955751b0fe8037d6c8a75464Yi Jin    repeated android.content.pm.FeatureInfoProto features = 4;
61426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    repeated PackageProto packages = 5;
62426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    repeated SharedUserProto shared_users = 6;
63426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    // Messages from the settings problem file
640d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin    repeated string messages = 7 [ (android.privacy).dest = DEST_EXPLICIT ];
65426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P}
66426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P
67426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta Pmessage PackageProto {
680d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin    option (android.msg_privacy).dest = DEST_AUTOMATIC;
690d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin
70426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    message SplitProto {
710d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin        option (android.msg_privacy).dest = DEST_AUTOMATIC;
720d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin
730d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin        // The split name of package, e.g. base
74c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional string name = 1;
75c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional int32 revision_code = 2;
76426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    }
77426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    message UserInfoProto {
780d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin        option (android.msg_privacy).dest = DEST_AUTOMATIC;
790d7bc2d17d6e6781aec04c87cd3ada21b67f73acYi Jin
80426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P        enum InstallType {
81426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            NOT_INSTALLED_FOR_USER = 0;
82426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            FULL_APP_INSTALL = 1;
83426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            INSTANT_APP_INSTALL = 2;
84426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P        }
85426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P        // Enum values gotten from PackageManger.java
86426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P        enum EnabledState {
87426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            // This component or application is in its default enabled state
88426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            // (as specified in its manifest).
89426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            COMPONENT_ENABLED_STATE_DEFAULT = 0;
90426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            // This component or application has been explictily enabled, regardless
91426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            // of what it has specified in its manifest.
92426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            COMPONENT_ENABLED_STATE_ENABLED = 1;
93426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            // This component or application has been explicitly disabled, regardless of
94426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            // what it has specified in its manifest.
95426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            COMPONENT_ENABLED_STATE_DISABLED = 2;
96426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            // The user has explicitly disabled the application, regardless of what it has
97426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            // specified in its manifest.
98426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            COMPONENT_ENABLED_STATE_DISABLED_USER = 3;
99426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            // This application should be considered, until the point where the user actually
100426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            // wants to use it.
101426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P            COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED = 4;
102426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P        }
103426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P
104c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional int32 id = 1;
105c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional InstallType install_type = 2;
106426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P        // Is the app restricted by owner / admin
107c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional bool is_hidden = 3;
108c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional bool is_suspended = 4;
109c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional bool is_stopped = 5;
110c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional bool is_launched = 6;
111c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional EnabledState enabled_state = 7;
112c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin        optional string last_disabled_app_caller = 8;
113021b57ab8df0927aa1f78a2f3bb01d5e70594b1aSuprabh Shukla        optional string suspending_package = 9;
114426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    }
115426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P
116426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    // Name of package. e.g. "com.android.providers.telephony".
117c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin    optional string name = 1;
118426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    // UID for this package as assigned by Android OS.
119c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin    optional int32 uid = 2;
120426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    // Package's reported version.
121c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin    optional int32 version_code = 3;
122426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    // Package's reported version string (what's displayed to the user).
123c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin    optional string version_string = 4;
124426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    // UTC timestamp of install
125c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin    optional int64 install_time_ms = 5;
126426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    // Millisecond UTC timestamp of latest update adjusted to Google's server clock.
127c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin    optional int64 update_time_ms = 6;
128426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    // From "dumpsys package" - name of package which installed this one.
129426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    // Typically "" if system app or "com.android.vending" if Play Store.
130c7f93070b6a5c8c12afcb77eb4e95c3018e1729fYi Jin    optional string installer_name = 7;
131426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    // Split APKs.
132426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    repeated SplitProto splits = 8;
133426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    // Per-user package info.
134426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P    repeated UserInfoProto users = 9;
135426cbefdf3c78bd0aa80b180ffc1fb8b5a226bc3Netta P}
136