Index: chromeos/dbus/update_engine_client.cc |
diff --git a/chromeos/dbus/update_engine_client.cc b/chromeos/dbus/update_engine_client.cc |
index ad6e7a39c05b7618ea1c6fc983c9225d528579f1..6a777b5cfca8906684835c21fe4c571446fa1197 100644 |
--- a/chromeos/dbus/update_engine_client.cc |
+++ b/chromeos/dbus/update_engine_client.cc |
@@ -4,9 +4,12 @@ |
#include "chromeos/dbus/update_engine_client.h" |
+#include <algorithm> |
+ |
#include "base/bind.h" |
#include "base/callback.h" |
#include "base/command_line.h" |
+#include "base/macros.h" |
#include "base/message_loop/message_loop.h" |
#include "base/strings/string_util.h" |
#include "chromeos/chromeos_switches.h" |
@@ -24,6 +27,11 @@ const char kReleaseChannelDev[] = "dev-channel"; |
const char kReleaseChannelBeta[] = "beta-channel"; |
const char kReleaseChannelStable[] = "stable-channel"; |
+// List of release channels ordered by stability. |
+const char* kReleaseChannelsList[] = {kReleaseChannelDev, |
+ kReleaseChannelBeta, |
+ kReleaseChannelStable}; |
+ |
// Delay between successive state transitions during AU. |
const int kStateTransitionDefaultDelayMs = 3000; |
@@ -66,9 +74,8 @@ void EmptyUpdateCheckCallbackBody( |
} |
bool IsValidChannel(const std::string& channel) { |
- return channel == kReleaseChannelDev || |
- channel == kReleaseChannelBeta || |
- channel == kReleaseChannelStable; |
+ return channel == kReleaseChannelDev || channel == kReleaseChannelBeta || |
+ channel == kReleaseChannelStable; |
} |
} // namespace |
@@ -561,4 +568,17 @@ UpdateEngineClient* UpdateEngineClient::Create( |
return new UpdateEngineClientStubImpl(); |
} |
+// static |
+bool UpdateEngineClient::IsTargetChannelMoreStable( |
+ const std::string& current_channel, |
+ const std::string& target_channel) { |
+ auto cix = std::find(kReleaseChannelsList, |
+ kReleaseChannelsList + arraysize(kReleaseChannelsList), |
+ current_channel); |
+ auto tix = std::find(kReleaseChannelsList, |
+ kReleaseChannelsList + arraysize(kReleaseChannelsList), |
+ target_channel); |
+ return tix > cix; |
+} |
+ |
} // namespace chromeos |