blob: 9fd8bc44a392e3b9f47a9539f601b8f7988880ec [file] [log] [blame]
Aaron Wood56d8ab32017-09-22 15:56:18 -07001//
2// Copyright (C) 2017 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//
16
17#ifndef UPDATE_ENGINE_UPDATE_MANAGER_ANDROID_THINGS_POLICY_H_
18#define UPDATE_ENGINE_UPDATE_MANAGER_ANDROID_THINGS_POLICY_H_
19
20#include <string>
21
22#include "update_engine/update_manager/next_update_check_policy_impl.h"
23#include "update_engine/update_manager/policy_utils.h"
24
25namespace chromeos_update_manager {
26
27// AndroidThingsPolicy implements the policy-related logic used in
28// AndroidThings.
29class AndroidThingsPolicy : public Policy {
30 public:
31 AndroidThingsPolicy() = default;
32 ~AndroidThingsPolicy() override = default;
33
34 // Policy overrides.
35 EvalStatus UpdateCheckAllowed(EvaluationContext* ec,
36 State* state,
37 std::string* error,
38 UpdateCheckParams* result) const override;
39
Aaron Woodbf5a2522017-10-04 10:58:36 -070040 // Uses the |UpdateRestrictions| to determine if the download and apply can
41 // occur at this time.
Aaron Wood56d8ab32017-09-22 15:56:18 -070042 EvalStatus UpdateCanBeApplied(
43 EvaluationContext* ec,
44 State* state,
45 std::string* error,
46 chromeos_update_engine::ErrorCode* result,
47 chromeos_update_engine::InstallPlan* install_plan) const override;
48
49 // Always returns |EvalStatus::kSucceeded|
50 EvalStatus UpdateCanStart(EvaluationContext* ec,
51 State* state,
52 std::string* error,
53 UpdateDownloadParams* result,
54 UpdateState update_state) const override;
55
56 // Always returns |EvalStatus::kSucceeded|
57 EvalStatus UpdateDownloadAllowed(EvaluationContext* ec,
58 State* state,
59 std::string* error,
60 bool* result) const override;
61
62 // P2P is always disabled. Returns |result|==|false| and
63 // |EvalStatus::kSucceeded|
Aaron Woodc73fdc12017-12-06 11:09:15 -080064 EvalStatus P2PEnabled(EvaluationContext* ec,
65 State* state,
66 std::string* error,
67 bool* result) const override;
Aaron Wood56d8ab32017-09-22 15:56:18 -070068
69 // This will return immediately with |EvalStatus::kSucceeded| and set
70 // |result|==|false|
Aaron Woodc73fdc12017-12-06 11:09:15 -080071 EvalStatus P2PEnabledChanged(EvaluationContext* ec,
72 State* state,
73 std::string* error,
74 bool* result,
75 bool prev_result) const override;
Aaron Wood56d8ab32017-09-22 15:56:18 -070076
77 protected:
78 // Policy override.
79 std::string PolicyName() const override { return "AndroidThingsPolicy"; }
80
81 private:
82 friend class UmAndroidThingsPolicyTest;
83 FRIEND_TEST(UmAndroidThingsPolicyTest, UpdateCheckAllowedWaitsForTheTimeout);
84
85 static const NextUpdateCheckPolicyConstants kNextUpdateCheckPolicyConstants;
86
87 DISALLOW_COPY_AND_ASSIGN(AndroidThingsPolicy);
88};
89
90} // namespace chromeos_update_manager
91
92#endif // UPDATE_ENGINE_UPDATE_MANAGER_ANDROID_THINGS_POLICY_H_