blob: 6f8f4ad912a42e0790351140ad7a511de86f27b0 [file] [log] [blame]
Aaron Woodcdd6bab2017-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
40 // Always returns |EvalStatus::kSucceeded|
41 EvalStatus UpdateCanBeApplied(
42 EvaluationContext* ec,
43 State* state,
44 std::string* error,
45 chromeos_update_engine::ErrorCode* result,
46 chromeos_update_engine::InstallPlan* install_plan) const override;
47
48 // Always returns |EvalStatus::kSucceeded|
49 EvalStatus UpdateCanStart(EvaluationContext* ec,
50 State* state,
51 std::string* error,
52 UpdateDownloadParams* result,
53 UpdateState update_state) const override;
54
55 // Always returns |EvalStatus::kSucceeded|
56 EvalStatus UpdateDownloadAllowed(EvaluationContext* ec,
57 State* state,
58 std::string* error,
59 bool* result) const override;
60
61 // P2P is always disabled. Returns |result|==|false| and
62 // |EvalStatus::kSucceeded|
63 virtual EvalStatus P2PEnabled(EvaluationContext* ec,
64 State* state,
65 std::string* error,
66 bool* result) const override;
67
68 // This will return immediately with |EvalStatus::kSucceeded| and set
69 // |result|==|false|
70 virtual EvalStatus P2PEnabledChanged(EvaluationContext* ec,
71 State* state,
72 std::string* error,
73 bool* result,
74 bool prev_result) const override;
75
76 protected:
77 // Policy override.
78 std::string PolicyName() const override { return "AndroidThingsPolicy"; }
79
80 private:
81 friend class UmAndroidThingsPolicyTest;
82 FRIEND_TEST(UmAndroidThingsPolicyTest, UpdateCheckAllowedWaitsForTheTimeout);
83
84 static const NextUpdateCheckPolicyConstants kNextUpdateCheckPolicyConstants;
85
86 DISALLOW_COPY_AND_ASSIGN(AndroidThingsPolicy);
87};
88
89} // namespace chromeos_update_manager
90
91#endif // UPDATE_ENGINE_UPDATE_MANAGER_ANDROID_THINGS_POLICY_H_