Files
frameworks_base/core/proto
Kweku Adams f57f99edd7 Formalizing states in BatterySaverStateMachine.
Formalizing the states and transitions makes it easier to add new
functionality and guarantee correctness.

This also fixes the issue where automatically turning off sticky
accidentally turns off battery saver since the transition is only
done when in the correct state. The problem was that when the battery
level changed (above the sticky auto disable threshold),
doAutoBatterySaver would be called. stickyEnabled would be true,
and the level would be above the threshold, so it would disable sticky.
Then at the next level drop, doAutoBatterySaver would be called again,
but this time, sticky would be false, so it would go to automatic check
and see that the level is above the threshold and then turn off battery saver.

Bug: 127659938
Bug: 119764865
Bug: 112232746
Bug: 79580230
Test: atest com.android.server.power.batterysaver.BatterySaverStateMachineTest
Test: atest CtsBatterySavingTestCases
Change-Id: Ia311d8bdc593a1680eda82d4d06fee21ea45c0ba
2019-03-18 18:31:11 -07:00
..
2019-01-28 17:30:05 -08: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.