blob: cb60a3cb5ff6854b40a908ea67fba6094c192c22 [file] [log] [blame]
Alex Deymoaea4c1c2015-08-19 20:24:43 -07001//
2// Copyright (C) 2015 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
Alex Deymof6ee0162015-07-31 12:35:22 -070016
17#ifndef UPDATE_ENGINE_CONNECTION_MANAGER_INTERFACE_H_
18#define UPDATE_ENGINE_CONNECTION_MANAGER_INTERFACE_H_
19
20#include <base/macros.h>
21
Alex Deymof6ee0162015-07-31 12:35:22 -070022namespace chromeos_update_engine {
23
24enum class NetworkConnectionType {
25 kEthernet,
26 kWifi,
27 kWimax,
28 kBluetooth,
29 kCellular,
30 kUnknown
31};
32
33enum class NetworkTethering {
34 kNotDetected,
35 kSuspected,
36 kConfirmed,
37 kUnknown
38};
39
40// This class exposes a generic interface to the connection manager
41// (e.g FlimFlam, Shill, etc.) to consolidate all connection-related
42// logic in update_engine.
43class ConnectionManagerInterface {
44 public:
45 virtual ~ConnectionManagerInterface() = default;
46
47 // Populates |out_type| with the type of the network connection
48 // that we are currently connected and |out_tethering| with the estimate of
49 // whether that network is being tethered.
Alex Deymo30534502015-07-20 15:06:33 -070050 virtual bool GetConnectionProperties(NetworkConnectionType* out_type,
51 NetworkTethering* out_tethering) = 0;
Alex Deymof6ee0162015-07-31 12:35:22 -070052
53 // Returns true if we're allowed to update the system when we're
54 // connected to the internet through the given network connection type and the
55 // given tethering state.
56 virtual bool IsUpdateAllowedOver(NetworkConnectionType type,
57 NetworkTethering tethering) const = 0;
58
59 protected:
60 ConnectionManagerInterface() = default;
61
62 private:
63 DISALLOW_COPY_AND_ASSIGN(ConnectionManagerInterface);
64};
65
66} // namespace chromeos_update_engine
67
68#endif // UPDATE_ENGINE_CONNECTION_MANAGER_INTERFACE_H_