Files
frameworks_base/core/proto
Hui Yu 88910decff FGS background start restriction.
1. Background started foreground service shall not have
while-in-use permissions including location, camera and
microphone. Many exemptions have been applied including:
--FGS started by widget.
--FGS started by notification.
--FGS started by IME or other visible app.
--FGS started by ROOT_UID, SYSTEM_UID, NFC_UID.

2. Add a phenotype key KEY_DEFAULT_BACKGROUND_FGS_STARTS_RESTRICTION_ENABLED
to turn on/off this feature (default is on).

3. In dogfood, if a background started FGS with while-in-use permission
(any of location/camera/microphone) run into this restriction, the FGS
will not been granted these permission. we show a toast message to
alert user and ask them to write a bugreport using instruction at
go/r-bg-fgs-restriction. So we can have a statistic how many apps will
be impacted by this feature.
These is a flag Settings.Global.FOREGROUND_SERVICE_STARTS_LOGGING_ENABLED
to turn on/off the toast message (default is on, in dogfood)

Bug: 136219221
Test: atest android.app.cts.ActivityManagerProcessStateTest
atest android.app.cts.ActivityManagerApi29Test.java
atest android.app.cts.ActivityManagerFgsBgStartTest

Change-Id: Ibc8aaa6839a69136f9311bfacdbab9705b31b6a7
2020-01-24 20:58:47 -08:00
..
2020-01-24 20:58:47 -08:00
2019-09-23 15:47:29 +00:00
…

Conventions for the protos in this directory:

  1. As in the rest of Android, use 4 spaces to indent instead of 2.

  2. For protos based on Java files, use the same package as the Java file. For example, com.android.server.thing instead of com.android.server.thing.proto.

  3. If the proto describes the top level output of dumpsys, it should contain Dump. This makes it easy to understand that the proto is the dumpsys output of a certain service, not the data structure of that service, e.g. WindowManagerServiceDumpProto vs WindowManagerServiceProto.

    • Inner messages whose containing messages have the Proto suffix do not need to have a Proto suffix. E.g:
message FooProto {
    message Bar {
        ...
    }
}
 vs
message FooProto {
    message BarProto {
        ...
    }
}
  1. If the proto represents the structure of an object, it should have Proto as its suffix. Please also include the full package path of the original object as a comment to the proto message.

  2. Include units in the field names. For example, screen_time_ms vs screen_time, or file_size_bytes or file_size_mebibytes vs file_size.

  3. Leave field numbers 50,000 - 100,000 reserved for OEMs.