1 // 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 25 namespace chromeos_update_manager { 26 27 // AndroidThingsPolicy implements the policy-related logic used in 28 // AndroidThings. 29 class 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 // Uses the |UpdateRestrictions| to determine if the download and apply can 41 // occur at this time. 42 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| 64 EvalStatus P2PEnabled(EvaluationContext* ec, 65 State* state, 66 std::string* error, 67 bool* result) const override; 68 69 // This will return immediately with |EvalStatus::kSucceeded| and set 70 // |result|==|false| 71 EvalStatus P2PEnabledChanged(EvaluationContext* ec, 72 State* state, 73 std::string* error, 74 bool* result, 75 bool prev_result) const override; 76 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_ 93