system_api: Add SetBacklightBrightnessRequest powerd proto.

Add a SetBacklightBrightnessRequest protocol message that
Chrome will send to powerd via SetScreenBrightnessPercent
D-Bus method calls. These calls currently send raw D-Bus
arguments, but a new "cause" argument is needed.

Also add a new "MODEL" enum value to
BacklightBrightnessChange's "cause" enum.

BUG=chromium:881786
TEST=built it

Change-Id: Ife2fc6741ece56620ced37feab8e33c093aeae0a
Reviewed-on: https://chromium-review.googlesource.com/1237429
Commit-Ready: Dan Erat <derat@chromium.org>
Tested-by: Dan Erat <derat@chromium.org>
Reviewed-by: Jia Meng <jiameng@chromium.org>
Reviewed-by: Dan Erat <derat@chromium.org>
diff --git a/dbus/power_manager/backlight.proto b/dbus/power_manager/backlight.proto
index 6a54a39..03bde65 100644
--- a/dbus/power_manager/backlight.proto
+++ b/dbus/power_manager/backlight.proto
@@ -8,13 +8,42 @@
 
 package power_manager;
 
+// See
+// https://chromium.googlesource.com/chromiumos/platform2/+/master/power_manager/docs/screen_brightness.md
+// for information about the mapping between brightness percents and backlight
+// hardware levels.
+
+// Request to change the backlight brightness sent from Chrome to powerd in a
+// SetScreenBrightnessPercent D-Bus method call.
+message SetBacklightBrightnessRequest {
+  // Desired backlight brightness as a percent in the range [0.0, 100.0].
+  optional double percent = 1;
+
+  // The speed at which the brightness should go to the requested percent.
+  enum Transition {
+    // The brightness should animate to the new percent.
+    GRADUAL = 0;
+    // The brightness should instantaneously go to the new percent.
+    INSTANT = 1;
+  }
+  optional Transition transition = 2;
+
+  // The reason the request was sent.
+  enum Cause {
+    // Explicit user request (typically using the onscreen brightness slider).
+    USER_REQUEST = 0;
+    // Automated request based on a prediction of the desired brightness.
+    MODEL = 1;
+  }
+  optional Cause cause = 3;
+
+  // Next value to use: 4
+}
+
 // Announcement of a backlight brightness change emitted by powerd via a
 // ScreenBrightnessChanged or KeyboardBrightnessChanged D-Bus signal.
 message BacklightBrightnessChange {
-  // Backlight brightness as a percent in the range [0.0, 100.0]. See
-  // https://chromium.googlesource.com/chromiumos/platform2/+/master/power_manager/docs/screen_brightness.md
-  // for more information about the mapping between percents and hardware
-  // levels.
+  // Current backlight brightness as a percent in the range [0.0, 100.0].
   optional double percent = 1;
 
   // The reason the brightness was changed.
@@ -24,9 +53,9 @@
     // Automated change in response to user activity (input event, video
     // activity, etc.).
     USER_ACTIVITY = 1;
-    // Automated change triggered by idle timeout due to user inactivity.
+    // Automated powerd change triggered by idle timeout due to user inactivity.
     USER_INACTIVITY = 2;
-    // Automated change caused by a change to the ambient light level.
+    // Automated powerd change due by a change to the ambient light level.
     AMBIENT_LIGHT_CHANGED = 3;
     // An external power source was connected.
     EXTERNAL_POWER_CONNECTED = 4;
@@ -39,7 +68,9 @@
     NO_LONGER_FORCED_OFF = 7;
     // Unspecified automated change (suspend/resume, shutdown, etc.).
     OTHER = 8;
-    // Next value to use: 9
+    // Automated request based on a prediction of the desired brightness.
+    MODEL = 9;
+    // Next value to use: 10
   }
   optional Cause cause = 2;