blob: d36ef76150acb56bfa90e01d46357c5369251884 [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
Sen Jiang255e22b2016-05-20 16:15:29 -070022#include "update_engine/connection_utils.h"
23
Alex Deymof6ee0162015-07-31 12:35:22 -070024namespace chromeos_update_engine {
25
Alex Deymof6ee0162015-07-31 12:35:22 -070026// This class exposes a generic interface to the connection manager
27// (e.g FlimFlam, Shill, etc.) to consolidate all connection-related
28// logic in update_engine.
29class ConnectionManagerInterface {
30 public:
31 virtual ~ConnectionManagerInterface() = default;
32
33 // Populates |out_type| with the type of the network connection
34 // that we are currently connected and |out_tethering| with the estimate of
35 // whether that network is being tethered.
Sen Jiang255e22b2016-05-20 16:15:29 -070036 virtual bool GetConnectionProperties(ConnectionType* out_type,
37 ConnectionTethering* out_tethering) = 0;
Alex Deymof6ee0162015-07-31 12:35:22 -070038
39 // Returns true if we're allowed to update the system when we're
40 // connected to the internet through the given network connection type and the
41 // given tethering state.
Sen Jiang255e22b2016-05-20 16:15:29 -070042 virtual bool IsUpdateAllowedOver(ConnectionType type,
43 ConnectionTethering tethering) const = 0;
Alex Deymof6ee0162015-07-31 12:35:22 -070044
45 protected:
46 ConnectionManagerInterface() = default;
47
48 private:
49 DISALLOW_COPY_AND_ASSIGN(ConnectionManagerInterface);
50};
51
52} // namespace chromeos_update_engine
53
54#endif // UPDATE_ENGINE_CONNECTION_MANAGER_INTERFACE_H_