blob: f9f4011f46ebded86c5da632a0a3deb3259fd7dd [file] [log] [blame]
Alex Deymoc705cc82014-02-19 11:15:00 -08001// Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Alex Deymo63784a52014-05-28 10:46:14 -07005#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_MANAGER_DEFAULT_POLICY_H_
6#define CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_MANAGER_DEFAULT_POLICY_H_
Alex Deymoc705cc82014-02-19 11:15:00 -08007
Gilad Arnoldf62a4b82014-05-01 07:41:07 -07008#include <base/time/time.h>
9
Alex Deymo63784a52014-05-28 10:46:14 -070010#include "update_engine/update_manager/policy.h"
Alex Deymoc705cc82014-02-19 11:15:00 -080011
Alex Deymo63784a52014-05-28 10:46:14 -070012namespace chromeos_update_manager {
Alex Deymoc705cc82014-02-19 11:15:00 -080013
14// The DefaultPolicy is a safe Policy implementation that doesn't fail. The
15// values returned by this policy are safe default in case of failure of the
Alex Deymo63784a52014-05-28 10:46:14 -070016// actual policy being used by the UpdateManager.
Alex Deymoc705cc82014-02-19 11:15:00 -080017class DefaultPolicy : public Policy {
18 public:
19 DefaultPolicy() {}
20 virtual ~DefaultPolicy() {}
21
22 // Policy overrides.
Alex Deymo0d11c602014-04-23 20:12:20 -070023 virtual EvalStatus UpdateCheckAllowed(
24 EvaluationContext* ec, State* state, std::string* error,
25 UpdateCheckParams* result) const override {
26 result->updates_enabled = true;
Gilad Arnoldaf2f6ae2014-04-28 14:14:52 -070027 return EvalStatus::kSucceeded;
28 }
29
Gilad Arnoldf62a4b82014-05-01 07:41:07 -070030 virtual EvalStatus UpdateCanStart(
31 EvaluationContext* ec,
32 State* state,
33 std::string* error,
34 UpdateCanStartResult* result,
35 const bool interactive,
36 const UpdateState& update_state) const override {
37 result->update_can_start = true;
Gilad Arnoldf62a4b82014-05-01 07:41:07 -070038 result->p2p_allowed = false;
39 result->target_channel.clear();
Gilad Arnoldb3b05442014-05-30 14:25:05 -070040 result->download_url_idx = 0;
41 result->download_url_num_failures = 0;
Gilad Arnoldf62a4b82014-05-01 07:41:07 -070042 result->cannot_start_reason = UpdateCannotStartReason::kUndefined;
43 result->scatter_wait_period = base::TimeDelta();
44 result->scatter_check_threshold = 0;
Alex Deymoe636c3c2014-03-11 19:02:08 -070045 return EvalStatus::kSucceeded;
Alex Deymoc705cc82014-02-19 11:15:00 -080046 }
47
Gilad Arnold0adbc942014-05-12 10:35:43 -070048 virtual EvalStatus UpdateCurrentConnectionAllowed(
49 EvaluationContext* ec,
50 State* state,
51 std::string* error,
52 bool* result) const override {
53 *result = true;
54 return EvalStatus::kSucceeded;
55 }
56
Gilad Arnoldb3b05442014-05-30 14:25:05 -070057 protected:
58 // Policy override.
59 virtual std::string PolicyName() const override {
60 return "DefaultPolicy";
61 }
62
Alex Deymoc705cc82014-02-19 11:15:00 -080063 private:
64 DISALLOW_COPY_AND_ASSIGN(DefaultPolicy);
65};
66
Alex Deymo63784a52014-05-28 10:46:14 -070067} // namespace chromeos_update_manager
Alex Deymoc705cc82014-02-19 11:15:00 -080068
Alex Deymo63784a52014-05-28 10:46:14 -070069#endif // CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_MANAGER_DEFAULT_POLICY_H_