From 163967fe8ef994a69a48b6940deb7cad0fcdec37 Mon Sep 17 00:00:00 2001 From: Yi Jin Date: Thu, 15 Mar 2018 13:49:44 -0700 Subject: [PATCH] Fix privacy tags based on PWG review meeting. 1. Remove unnecessary hex_hashs. 2. Make intent extras LOCAL 3. Make mnc EXPLICIT 4. Make diskstats error AUTO since it is only IOException. It is safe to modify proto numbers since they are not used yet. Bug: 74837756 Test: flash the changes and call incident -d, also updated go/irpf Change-Id: Idee0e927515e737c9a42a1dc29cb3c05e6d91ca9 --- core/java/android/os/Looper.java | 1 - core/java/android/os/PowerManager.java | 10 +- .../proto/android/content/configuration.proto | 2 +- core/proto/android/content/intent.proto | 2 +- core/proto/android/os/looper.proto | 6 +- core/proto/android/os/powermanager.proto | 11 +- .../server/activitymanagerservice.proto | 117 +++++++++--------- .../proto/android/server/intentresolver.proto | 4 +- core/proto/android/service/diskstats.proto | 4 +- .../com/android/server/am/AppBindRecord.java | 11 +- .../android/server/am/ConnectionRecord.java | 4 - .../android/server/am/IntentBindRecord.java | 6 +- .../com/android/server/am/ServiceRecord.java | 17 ++- .../java/com/android/server/am/UidRecord.java | 1 - 14 files changed, 93 insertions(+), 103 deletions(-) diff --git a/core/java/android/os/Looper.java b/core/java/android/os/Looper.java index 04cceb8e80ba6..848c596107208 100644 --- a/core/java/android/os/Looper.java +++ b/core/java/android/os/Looper.java @@ -331,7 +331,6 @@ public final class Looper { final long looperToken = proto.start(fieldId); proto.write(LooperProto.THREAD_NAME, mThread.getName()); proto.write(LooperProto.THREAD_ID, mThread.getId()); - proto.write(LooperProto.IDENTITY_HASH_CODE, System.identityHashCode(this)); mQueue.writeToProto(proto, LooperProto.QUEUE); proto.end(looperToken); } diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java index 97d415e18a733..66fa6294eceee 100644 --- a/core/java/android/os/PowerManager.java +++ b/core/java/android/os/PowerManager.java @@ -1643,12 +1643,12 @@ public final class PowerManager { public void writeToProto(ProtoOutputStream proto, long fieldId) { synchronized (mToken) { final long token = proto.start(fieldId); - proto.write(PowerManagerProto.WakeLockProto.HEX_STRING, - Integer.toHexString(System.identityHashCode(this))); - proto.write(PowerManagerProto.WakeLockProto.HELD, mHeld); - proto.write(PowerManagerProto.WakeLockProto.INTERNAL_COUNT, mInternalCount); + proto.write(PowerManagerProto.WakeLock.TAG, mTag); + proto.write(PowerManagerProto.WakeLock.PACKAGE_NAME, mPackageName); + proto.write(PowerManagerProto.WakeLock.HELD, mHeld); + proto.write(PowerManagerProto.WakeLock.INTERNAL_COUNT, mInternalCount); if (mWorkSource != null) { - mWorkSource.writeToProto(proto, PowerManagerProto.WakeLockProto.WORK_SOURCE); + mWorkSource.writeToProto(proto, PowerManagerProto.WakeLock.WORK_SOURCE); } proto.end(token); } diff --git a/core/proto/android/content/configuration.proto b/core/proto/android/content/configuration.proto index 74b47d2424b2f..6a174e868a5e5 100644 --- a/core/proto/android/content/configuration.proto +++ b/core/proto/android/content/configuration.proto @@ -32,7 +32,7 @@ message ConfigurationProto { optional float font_scale = 1; optional uint32 mcc = 2; - optional uint32 mnc = 3; + optional uint32 mnc = 3 [ (.android.privacy).dest = DEST_EXPLICIT ]; repeated LocaleProto locales = 4; optional uint32 screen_layout = 5; optional uint32 color_mode = 6; diff --git a/core/proto/android/content/intent.proto b/core/proto/android/content/intent.proto index 5e0ed111d7ea0..3b2c4fcb64cd8 100644 --- a/core/proto/android/content/intent.proto +++ b/core/proto/android/content/intent.proto @@ -59,7 +59,7 @@ message IntentProto { optional ComponentNameProto component = 7; optional string source_bounds = 8; optional string clip_data = 9 [ (.android.privacy).dest = DEST_EXPLICIT ]; - optional string extras = 10 [ (.android.privacy).dest = DEST_EXPLICIT ]; + optional string extras = 10 [ (.android.privacy).dest = DEST_LOCAL ]; optional int32 content_user_hint = 11; optional string selector = 12; } diff --git a/core/proto/android/os/looper.proto b/core/proto/android/os/looper.proto index 435c648d89d8d..dce65d35e516b 100644 --- a/core/proto/android/os/looper.proto +++ b/core/proto/android/os/looper.proto @@ -25,8 +25,8 @@ import "frameworks/base/libs/incident/proto/android/privacy.proto"; message LooperProto { option (.android.msg_privacy).dest = DEST_AUTOMATIC; - optional string thread_name = 1 [ (.android.privacy).dest = DEST_EXPLICIT ]; + // the thread name, usually set by developers. + optional string thread_name = 1; optional int64 thread_id = 2; - optional int32 identity_hash_code = 3; - optional android.os.MessageQueueProto queue = 4; + optional android.os.MessageQueueProto queue = 3; } diff --git a/core/proto/android/os/powermanager.proto b/core/proto/android/os/powermanager.proto index 78a28ed4a0e07..20b0a7446ae8b 100644 --- a/core/proto/android/os/powermanager.proto +++ b/core/proto/android/os/powermanager.proto @@ -36,13 +36,14 @@ message PowerManagerProto { } // WakeLock class in android.os.PowerManager, it is the one used by sdk - message WakeLockProto { + message WakeLock { option (.android.msg_privacy).dest = DEST_AUTOMATIC; - optional string hex_string = 1; - optional bool held = 2; - optional int32 internal_count = 3; - optional WorkSourceProto work_source = 4; + optional string tag = 1; + optional string package_name = 2; + optional bool held = 3; + optional int32 internal_count = 4; + optional WorkSourceProto work_source = 5; } } diff --git a/core/proto/android/server/activitymanagerservice.proto b/core/proto/android/server/activitymanagerservice.proto index 3b9150f44abc3..5491ca548b38d 100644 --- a/core/proto/android/server/activitymanagerservice.proto +++ b/core/proto/android/server/activitymanagerservice.proto @@ -157,7 +157,7 @@ message ReceiverListProto { optional BroadcastRecordProto current = 5; optional bool linked_to_death = 6; repeated BroadcastFilterProto filters = 7; - optional string hex_hash = 8; // this hash is used to find the object in IntentResolver + optional string hex_hash = 8; // used to find this ReceiverList object in IntentResolver } message ProcessRecordProto { @@ -184,7 +184,7 @@ message BroadcastFilterProto { optional .android.content.IntentFilterProto intent_filter = 1; optional string required_permission = 2; - optional string hex_hash = 3; // used to find the object in IntentResolver + optional string hex_hash = 3; // used to find the BroadcastFilter object in IntentResolver optional int32 owning_user_id = 4; } @@ -458,13 +458,12 @@ message ServiceRecordProto { option (.android.msg_privacy).dest = DEST_AUTOMATIC; optional string short_name = 1; - optional string hex_hash = 2; - optional bool is_running = 3; // false if the application service is null - optional int32 pid = 4; - optional .android.content.IntentProto intent = 5; - optional string package_name = 6; - optional string process_name = 7; - optional string permission = 8; + optional bool is_running = 2; // false if the application service is null + optional int32 pid = 3; + optional .android.content.IntentProto intent = 4; + optional string package_name = 5; + optional string process_name = 6; + optional string permission = 7; message AppInfo { option (.android.msg_privacy).dest = DEST_EXPLICIT; @@ -473,11 +472,11 @@ message ServiceRecordProto { optional string res_dir = 2; optional string data_dir = 3; } - optional AppInfo appinfo = 9; - optional ProcessRecordProto app = 10; - optional ProcessRecordProto isolated_proc = 11; - optional bool whitelist_manager = 12; - optional bool delayed = 13; + optional AppInfo appinfo = 8; + optional ProcessRecordProto app = 9; + optional ProcessRecordProto isolated_proc = 10; + optional bool whitelist_manager = 11; + optional bool delayed = 12; message Foreground { option (.android.msg_privacy).dest = DEST_AUTOMATIC; @@ -485,13 +484,13 @@ message ServiceRecordProto { optional int32 id = 1; optional .android.app.NotificationProto notification = 2; } - optional Foreground foreground = 14; + optional Foreground foreground = 13; - optional .android.util.Duration create_real_time = 15; - optional .android.util.Duration starting_bg_timeout = 16; - optional .android.util.Duration last_activity_time = 17; - optional .android.util.Duration restart_time = 18; - optional bool created_from_fg = 19; + optional .android.util.Duration create_real_time = 14; + optional .android.util.Duration starting_bg_timeout = 15; + optional .android.util.Duration last_activity_time = 16; + optional .android.util.Duration restart_time = 17; + optional bool created_from_fg = 18; // variables used to track states related to service start message Start { @@ -503,7 +502,7 @@ message ServiceRecordProto { optional bool call_start = 4; optional int32 last_start_id = 5; } - optional Start start = 20; + optional Start start = 19; message ExecuteNesting { option (.android.msg_privacy).dest = DEST_AUTOMATIC; @@ -512,9 +511,9 @@ message ServiceRecordProto { optional bool execute_fg = 2; optional .android.util.Duration executing_start = 3; } - optional ExecuteNesting execute = 21; + optional ExecuteNesting execute = 20; - optional .android.util.Duration destory_time = 22; + optional .android.util.Duration destory_time = 21; message Crash { option (.android.msg_privacy).dest = DEST_AUTOMATIC; @@ -524,9 +523,9 @@ message ServiceRecordProto { optional .android.util.Duration next_restart_time = 3; optional int32 crash_count = 4; } - optional Crash crash = 23; + optional Crash crash = 22; - message StartItemProto { + message StartItem { option (.android.msg_privacy).dest = DEST_AUTOMATIC; optional int32 id = 1; @@ -537,17 +536,20 @@ message ServiceRecordProto { optional NeededUriGrantsProto needed_grants = 6; optional UriPermissionOwnerProto uri_permissions = 7; } - repeated StartItemProto delivered_starts = 24; - repeated StartItemProto pending_starts = 25; + repeated StartItem delivered_starts = 23; + repeated StartItem pending_starts = 24; - repeated IntentBindRecordProto bindings = 26; - repeated ConnectionRecordProto connections = 27; + repeated IntentBindRecordProto bindings = 25; + repeated ConnectionRecordProto connections = 26; + + // Next Tag: 27 } message ConnectionRecordProto { option (.android.msg_privacy).dest = DEST_AUTOMATIC; - optional string hex_hash = 1; + // used to find same record, e.g. AppBindRecord has the hex_hash + optional string hex_hash = 1; // cross reference the object and avoid double logging. optional int32 user_id = 2; enum Flag { @@ -570,30 +572,28 @@ message ConnectionRecordProto { } repeated Flag flags = 3; optional string service_name = 4; - optional string conn_hex_hash = 5; } message AppBindRecordProto { option (.android.msg_privacy).dest = DEST_AUTOMATIC; - optional string hex_hash = 1; - optional ProcessRecordProto client = 2; - repeated ConnectionRecordProto connections = 3; + optional string service_name = 1; + optional string client_proc_name = 2; + repeated string connections = 3; // hex_hash of ConnectionRecordProto } message IntentBindRecordProto { option (.android.msg_privacy).dest = DEST_AUTOMATIC; - optional string hex_hash = 1; - optional bool is_create = 2; - optional .android.content.IntentProto intent = 3; - optional string binder = 4; - optional bool requested = 5; - optional bool received = 6; - optional bool has_bound = 7; - optional bool do_rebind = 8; + optional .android.content.IntentProto intent = 1; + optional string binder = 2; + optional bool auto_create = 3; // value of BIND_AUTO_CREATE flag. + optional bool requested = 4; + optional bool received = 5; + optional bool has_bound = 6; + optional bool do_rebind = 7; - repeated AppBindRecordProto apps = 9; + repeated AppBindRecordProto apps = 8; } // TODO: "dumpsys activity --proto processes" @@ -688,10 +688,10 @@ message ActivityManagerServiceDumpProcessesProto { optional SleepStatus sleep_status = 27; message VoiceProto { - option (.android.msg_privacy).dest = DEST_EXPLICIT; + option (.android.msg_privacy).dest = DEST_AUTOMATIC; optional string session = 1; - optional .android.os.PowerManagerProto.WakeLockProto wakelock = 2; + optional .android.os.PowerManagerProto.WakeLock wakelock = 2; } optional VoiceProto running_voice = 28; @@ -780,8 +780,8 @@ message ActivityManagerServiceDumpProcessesProto { optional bool call_finish_booting = 44; optional bool boot_animation_complete = 45; optional int64 last_power_check_uptime_ms = 46; - optional .android.os.PowerManagerProto.WakeLockProto going_to_sleep = 47; - optional .android.os.PowerManagerProto.WakeLockProto launching_activity = 48; + optional .android.os.PowerManagerProto.WakeLock going_to_sleep = 47; + optional .android.os.PowerManagerProto.WakeLock launching_activity = 48; optional int32 adj_seq = 49; optional int32 lru_seq = 50; optional int32 num_non_cached_procs = 51; @@ -813,14 +813,13 @@ message ActiveInstrumentationProto { message UidRecordProto { option (.android.msg_privacy).dest = DEST_AUTOMATIC; - optional string hex_hash = 1; - optional int32 uid = 2; - optional .android.app.ProcessStateEnum current = 3; - optional bool ephemeral = 4; - optional bool fg_services = 5; - optional bool whilelist = 6; - optional .android.util.Duration last_background_time = 7; - optional bool idle = 8; + optional int32 uid = 1; + optional .android.app.ProcessStateEnum current = 2; + optional bool ephemeral = 3; + optional bool fg_services = 4; + optional bool whilelist = 5; + optional .android.util.Duration last_background_time = 6; + optional bool idle = 7; enum Change { CHANGE_GONE = 0; @@ -829,8 +828,8 @@ message UidRecordProto { CHANGE_CACHED = 3; CHANGE_UNCACHED = 4; } - repeated Change last_reported_changes = 9; - optional int32 num_procs = 10; + repeated Change last_reported_changes = 8; + optional int32 num_procs = 9; message ProcStateSequence { option (.android.msg_privacy).dest = DEST_AUTOMATIC; @@ -839,7 +838,9 @@ message UidRecordProto { optional int64 last_network_updated = 2; optional int64 last_dispatched = 3; } - optional ProcStateSequence network_state_update = 11; + optional ProcStateSequence network_state_update = 10; + + // Next Tag: 11 } // proto of class ImportanceToken in ActivityManagerService diff --git a/core/proto/android/server/intentresolver.proto b/core/proto/android/server/intentresolver.proto index 0ada89533cb4e..e67723e5abfad 100644 --- a/core/proto/android/server/intentresolver.proto +++ b/core/proto/android/server/intentresolver.proto @@ -24,9 +24,9 @@ import "frameworks/base/libs/incident/proto/android/privacy.proto"; message IntentResolverProto { option (.android.msg_privacy).dest = DEST_AUTOMATIC; - + // A mapping bewteen some key string to IntentFilter's toString(). message ArrayMapEntry { - option (.android.msg_privacy).dest = DEST_EXPLICIT; + option (.android.msg_privacy).dest = DEST_AUTOMATIC; optional string key = 1; repeated string values = 2; diff --git a/core/proto/android/service/diskstats.proto b/core/proto/android/service/diskstats.proto index e5bdc8bd16f61..f55f0e775d78e 100644 --- a/core/proto/android/service/diskstats.proto +++ b/core/proto/android/service/diskstats.proto @@ -37,8 +37,8 @@ message DiskStatsServiceDumpProto { } // Whether the latency test resulted in an error optional bool has_test_error = 1; - // If the test errored, error message is contained here - optional string error_message = 2 [ (android.privacy).dest = DEST_EXPLICIT ]; + // If the test errored, error message is contained here, it is just IOException. + optional string error_message = 2; // 512B write latency in milliseconds, if the test was successful optional int32 write_512b_latency_millis = 3; // Free Space in the major partitions diff --git a/services/core/java/com/android/server/am/AppBindRecord.java b/services/core/java/com/android/server/am/AppBindRecord.java index 7b3859789d289..972a692d276fe 100644 --- a/services/core/java/com/android/server/am/AppBindRecord.java +++ b/services/core/java/com/android/server/am/AppBindRecord.java @@ -66,14 +66,13 @@ final class AppBindRecord { void writeToProto(ProtoOutputStream proto, long fieldId) { long token = proto.start(fieldId); - proto.write(AppBindRecordProto.HEX_HASH, - Integer.toHexString(System.identityHashCode(this))); - if (client != null) { - client.writeToProto(proto, AppBindRecordProto.CLIENT); - } + proto.write(AppBindRecordProto.SERVICE_NAME, service.shortName); + proto.write(AppBindRecordProto.CLIENT_PROC_NAME, client.processName); final int N = connections.size(); for (int i=0; i