PolicyManager: New main PolicyManager class.

The PolicyManager class is the singleton instance used by the Update
Engine to make policy requests. The PolicyManager uses a Policy pure
virtual class with the definition of all the public policy
implementation. Different platforms can implement a different
subclass of it or extend the existing one.

The Policy class comprises the set of policy related decision and
the logic implementing those.

This patch includes a new PolicyManager class and a sample Policy
for ChromeOS that will be extended when the actual policies are
migrated to this framework. A default policy is also included and
is used whenever the actual policy fails, as a safe default.

BUG=chromium:338591
TEST=Unit tests pass.

Change-Id: If60c87d8cb9031eb15b6d4d5e937f65f56c79a04
Reviewed-on: https://chromium-review.googlesource.com/186884
Tested-by: Alex Deymo <deymo@chromium.org>
Reviewed-by: Gilad Arnold <garnold@chromium.org>
Commit-Queue: Alex Deymo <deymo@chromium.org>
diff --git a/policy_manager/default_policy.h b/policy_manager/default_policy.h
new file mode 100644
index 0000000..1d10084
--- /dev/null
+++ b/policy_manager/default_policy.h
@@ -0,0 +1,34 @@
+// Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_DEFAULT_POLICY_H
+#define CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_DEFAULT_POLICY_H
+
+#include "update_engine/policy_manager/policy.h"
+
+namespace chromeos_policy_manager {
+
+// The DefaultPolicy is a safe Policy implementation that doesn't fail. The
+// values returned by this policy are safe default in case of failure of the
+// actual policy being used by the PolicyManager.
+class DefaultPolicy : public Policy {
+ public:
+  DefaultPolicy() {}
+  virtual ~DefaultPolicy() {}
+
+  // Policy overrides.
+  virtual EvalStatus UpdateCheckAllowed(EvaluationContext* ec,
+                                        std::string* error,
+                                        bool* result) const {
+    *result = true;
+    return EvalStatusSucceeded;
+  }
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(DefaultPolicy);
+};
+
+}  // namespace chromeos_policy_manager
+
+#endif  // CHROMEOS_PLATFORM_UPDATE_ENGINE_POLICY_MANAGER_DEFAULT_POLICY_H