blob: 5112f684ef2da09bd4ea3fd8fc0c20b3632881e2 [file] [log] [blame]
Alex Deymoaea4c1c2015-08-19 20:24:43 -07001//
2// Copyright (C) 2014 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 Deymoc83baf62014-04-02 17:43:35 -070016
Gilad Arnold48415f12014-06-27 07:10:58 -070017#ifndef UPDATE_ENGINE_UPDATE_MANAGER_DEVICE_POLICY_PROVIDER_H_
18#define UPDATE_ENGINE_UPDATE_MANAGER_DEVICE_POLICY_PROVIDER_H_
Alex Deymoc83baf62014-04-02 17:43:35 -070019
20#include <set>
21#include <string>
22
Alex Deymoc83baf62014-04-02 17:43:35 -070023#include <base/time/time.h>
Miriam Polzera02a1f12020-08-27 08:30:14 +020024#include <base/version.h>
Alex Deymo63784a52014-05-28 10:46:14 -070025#include <policy/libpolicy.h>
Alex Deymoc83baf62014-04-02 17:43:35 -070026
Alex Deymo63784a52014-05-28 10:46:14 -070027#include "update_engine/update_manager/provider.h"
Marton Hunyady000dfa22018-02-21 14:30:35 +010028#include "update_engine/update_manager/rollback_prefs.h"
Alex Deymo63784a52014-05-28 10:46:14 -070029#include "update_engine/update_manager/shill_provider.h"
30#include "update_engine/update_manager/variable.h"
Adolfo Victoria94ffe132018-06-28 16:14:56 -070031#include "update_engine/update_manager/weekly_time.h"
Alex Deymoc83baf62014-04-02 17:43:35 -070032
Alex Deymo63784a52014-05-28 10:46:14 -070033namespace chromeos_update_manager {
Alex Deymoc83baf62014-04-02 17:43:35 -070034
35// Provides access to the current DevicePolicy.
36class DevicePolicyProvider : public Provider {
37 public:
Alex Deymo610277e2014-11-11 21:18:11 -080038 ~DevicePolicyProvider() override {}
Alex Deymoc83baf62014-04-02 17:43:35 -070039
40 // Variable stating whether the DevicePolicy was loaded.
41 virtual Variable<bool>* var_device_policy_is_loaded() = 0;
42
43 // Variables mapping the information received on the DevicePolicy protobuf.
44 virtual Variable<std::string>* var_release_channel() = 0;
45
46 virtual Variable<bool>* var_release_channel_delegated() = 0;
47
Amin Hassani37b67232020-08-13 09:29:48 -070048 virtual Variable<std::string>* var_release_lts_tag() = 0;
49
Alex Deymoc83baf62014-04-02 17:43:35 -070050 virtual Variable<bool>* var_update_disabled() = 0;
51
52 virtual Variable<std::string>* var_target_version_prefix() = 0;
53
Marton Hunyady000dfa22018-02-21 14:30:35 +010054 // Variable returning what should happen if the target_version_prefix is
55 // earlier than the current Chrome OS version.
56 virtual Variable<RollbackToTargetVersion>*
Amin Hassani4b717432019-01-14 16:24:20 -080057 var_rollback_to_target_version() = 0;
Marton Hunyady000dfa22018-02-21 14:30:35 +010058
59 // Variable returning the number of Chrome milestones rollback should be
60 // possible. Rollback protection will be postponed by this many versions.
61 virtual Variable<int>* var_rollback_allowed_milestones() = 0;
62
Gilad Arnoldf62a4b82014-05-01 07:41:07 -070063 // Returns a non-negative scatter interval used for updates.
Alex Deymoc83baf62014-04-02 17:43:35 -070064 virtual Variable<base::TimeDelta>* var_scatter_factor() = 0;
65
Alex Vakulenko072359c2014-07-18 11:41:07 -070066 // Variable returning the set of connection types allowed for updates. The
Alex Deymoc83baf62014-04-02 17:43:35 -070067 // identifiers returned are consistent with the ones returned by the
68 // ShillProvider.
Sen Jiang255e22b2016-05-20 16:15:29 -070069 virtual Variable<std::set<chromeos_update_engine::ConnectionType>>*
Amin Hassani4b717432019-01-14 16:24:20 -080070 var_allowed_connection_types_for_update() = 0;
Alex Deymoc83baf62014-04-02 17:43:35 -070071
Jae Hoon Kim9d9492f2019-06-17 14:52:48 -070072 // Variable stating whether the device has an owner. For enterprise enrolled
73 // devices, this will be false as the device owner has an empty string.
74 virtual Variable<bool>* var_has_owner() = 0;
Alex Deymoc83baf62014-04-02 17:43:35 -070075
76 virtual Variable<bool>* var_http_downloads_enabled() = 0;
77
78 virtual Variable<bool>* var_au_p2p_enabled() = 0;
79
Xiyuan Xia6e30bc52016-02-24 15:35:42 -080080 virtual Variable<bool>* var_allow_kiosk_app_control_chrome_version() = 0;
81
Adolfo Victoria0dbf1f92018-07-19 14:18:11 -070082 // Variable that contains the app that is to be run when launched in kiosk
83 // mode. If the device is not in kiosk-mode this should be empty.
84 virtual Variable<std::string>* var_auto_launched_kiosk_app_id() = 0;
85
Adolfo Victoria94ffe132018-06-28 16:14:56 -070086 // Variable that contains the time intervals during the week for which update
87 // checks are disallowed.
88 virtual Variable<WeeklyTimeIntervalVector>*
89 var_disallowed_time_intervals() = 0;
90
Miriam Polzerf197cdb2020-08-27 08:18:29 +020091 // Variable that determins whether we should powerwash and rollback on channel
92 // downgrade for enrolled devices.
93 virtual Variable<ChannelDowngradeBehavior>*
94 var_channel_downgrade_behavior() = 0;
95
Miriam Polzera02a1f12020-08-27 08:30:14 +020096 // Variable that contains Chrome OS minimum required version. It contains a
97 // Chrome OS version number.
98 virtual Variable<base::Version>* var_device_minimum_version() = 0;
99
Saurabh Nijhara43d7adc2020-11-06 16:13:02 +0100100 // Variable that contains a token which maps to a Chrome OS Quick Fix Build to
101 // which the device would be updated if not blocked by another policy.
102 virtual Variable<std::string>* var_quick_fix_build_token() = 0;
103
Alex Deymoc83baf62014-04-02 17:43:35 -0700104 protected:
105 DevicePolicyProvider() {}
106
107 private:
108 DISALLOW_COPY_AND_ASSIGN(DevicePolicyProvider);
109};
110
Alex Deymo63784a52014-05-28 10:46:14 -0700111} // namespace chromeos_update_manager
Alex Deymoc83baf62014-04-02 17:43:35 -0700112
Gilad Arnold48415f12014-06-27 07:10:58 -0700113#endif // UPDATE_ENGINE_UPDATE_MANAGER_DEVICE_POLICY_PROVIDER_H_