UpdateEngine-side changes to allow updates over 3G based on device policy.
Some enterprise chromebooks have only 3G and hence they need the ability
to update over 3G if the enterprise policy allows that. This CL adds
the support in update_engine to enable that.
BUG=chromium-os:31099
TEST=Tested E2E on 3G, added unit tests and did regression testing.
CQ-DEPEND=I1a55a392f3dc0f12d917eb45dcf0456b57735514
Change-Id: I121bda35e54fa6c35e002a76db198d13b72b650e
Reviewed-on: https://gerrit.chromium.org/gerrit/25470
Commit-Ready: Jay Srinivasan <jaysri@chromium.org>
Reviewed-by: Jay Srinivasan <jaysri@chromium.org>
Tested-by: Jay Srinivasan <jaysri@chromium.org>
diff --git a/connection_manager.h b/connection_manager.h
new file mode 100644
index 0000000..6cc279e
--- /dev/null
+++ b/connection_manager.h
@@ -0,0 +1,57 @@
+// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_CONNECTION_MANAGER_H_
+#define CHROMEOS_PLATFORM_UPDATE_ENGINE_CONNECTION_MANAGER_H_
+
+#include <base/basictypes.h>
+
+#include "update_engine/dbus_interface.h"
+
+namespace chromeos_update_engine {
+
+enum NetworkConnectionType {
+ kNetEthernet = 0,
+ kNetWifi,
+ kNetWimax,
+ kNetBluetooth,
+ kNetCellular,
+ kNetUnknown
+};
+
+class SystemState;
+
+// This class exposes a generic interface to the connection manager
+// (e.g FlimFlam, Shill, etc.) to consolidate all connection-related
+// logic in update_engine.
+class ConnectionManager {
+ public:
+ // Constructs a new ConnectionManager object initialized with the
+ // given system state.
+ explicit ConnectionManager(SystemState* system_state);
+
+ // Populates |out_type| with the type of the network connection
+ // that we are currently connected. The dbus_iface is used to
+ // query the real connection manager (e.g shill).
+ virtual bool GetConnectionType(DbusGlibInterface* dbus_iface,
+ NetworkConnectionType* out_type) const;
+
+ // Returns true if we're allowed to update the system when we're
+ // connected to the internet through the given network connection type.
+ virtual bool IsUpdateAllowedOver(NetworkConnectionType type) const;
+
+ // Returns the string representation corresponding to the given
+ // connection type.
+ virtual const char* StringForConnectionType(NetworkConnectionType type) const;
+
+ private:
+ // The global context for update_engine
+ SystemState* system_state_;
+
+ DISALLOW_COPY_AND_ASSIGN(ConnectionManager);
+};
+
+} // namespace chromeos_update_engine
+
+#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_CONNECTION_MANAGER_H_