update_engine: Add newer DBus method and signal for GetStatus
The current GetStatus function is pretty non-extendable and there has
been use cases where we wanted to add arguments to it but it was quite
hard to do specially changes in Chrome.
This CL adds a new DBus Method GetStatusAdvanced and Signal
UpdateStatusAdvanced which use a protobuf for communicating dbus
messages. This allows us to extend the protobuf without much effort in
the future.
BUG=chromium:977320
TEST=unittests, precq
Cq-Depend: chromium:1672684, chrome-internal:1424559
Change-Id: Ia93ed189e7561ca18c63b5ded81826bc9b1cff12
Reviewed-on: https://chromium-review.googlesource.com/1669974
Tested-by: Amin Hassani <ahassani@chromium.org>
Commit-Ready: Amin Hassani <ahassani@chromium.org>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
diff --git a/dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml b/dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml
index f81d4ed..ef7bea7 100644
--- a/dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml
+++ b/dbus_bindings/org.chromium.UpdateEngineInterface.dbus-xml
@@ -1,4 +1,19 @@
<?xml version="1.0" encoding="utf-8" ?>
+<!--
+ Copyright (C) 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+!-->
<node name="/org/chromium/UpdateEngine">
<interface name="org.chromium.UpdateEngineInterface">
<annotation name="org.freedesktop.DBus.GLib.CSymbol"
@@ -31,12 +46,22 @@
<method name="ResetStatus">
</method>
<method name="GetStatus">
+ <!-- TODO(crbug.com/977320): Deprecate this method. -->
<arg type="x" name="last_checked_time" direction="out" />
<arg type="d" name="progress" direction="out" />
<arg type="s" name="current_operation" direction="out" />
<arg type="s" name="new_version" direction="out" />
<arg type="x" name="new_size" direction="out" />
</method>
+ <method name="GetStatusAdvanced">
+ <arg type="ay" name="status" direction="out">
+ <tp:docstring>
+ The current status serialized in a protobuf.
+ </tp:docstring>
+ <annotation name="org.chromium.DBus.Argument.ProtobufClass"
+ value="update_engine::StatusResult"/>
+ </arg>
+ </method>
<method name="RebootIfNeeded">
</method>
<method name="SetChannel">
@@ -81,12 +106,22 @@
<arg type="x" name="usec_wallclock" direction="out" />
</method>
<signal name="StatusUpdate">
+ <!-- TODO(crbug.com/977320): Deprecate this method. -->
<arg type="x" name="last_checked_time" />
<arg type="d" name="progress" />
<arg type="s" name="current_operation" />
<arg type="s" name="new_version" />
<arg type="x" name="new_size" />
</signal>
+ <signal name="StatusUpdateAdvanced">
+ <arg type="ay" name="status" direction="out">
+ <tp:docstring>
+ The current status serialized in a protobuf.
+ </tp:docstring>
+ <annotation name="org.chromium.DBus.Argument.ProtobufClass"
+ value="update_engine::StatusResult"/>
+ </arg>
+ </signal>
<method name="GetPrevVersion">
<arg type="s" name="prev_version" direction="out" />
</method>