1// Copyright 2013 The Chromium 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
5#ifndef COMPONENTS_POLICY_CORE_COMMON_POLICY_DETAILS_H_
6#define COMPONENTS_POLICY_CORE_COMMON_POLICY_DETAILS_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "base/callback_forward.h"
12#include "components/policy/policy_export.h"
13
14namespace policy {
15
16// Contains read-only metadata about a Chrome policy.
17struct POLICY_EXPORT PolicyDetails {
18  // True if this policy has been deprecated.
19  bool is_deprecated;
20
21  // True if this policy is a Chrome OS device policy.
22  bool is_device_policy;
23
24  // The id of the protobuf field that contains this policy,
25  // in the cloud policy protobuf.
26  int id;
27
28  // If this policy references external data then this is the maximum size
29  // allowed for that data.
30  // Otherwise this field is 0 and doesn't have any meaning.
31  size_t max_external_data_size;
32};
33
34// A typedef for functions that match the signature of
35// GetChromePolicyDetails(). This can be used to inject that
36// function into objects, so that it can be easily mocked for
37// tests.
38typedef base::Callback<const PolicyDetails*(const std::string&)>
39    GetChromePolicyDetailsCallback;
40
41}  // namespace policy
42
43#endif  // COMPONENTS_POLICY_CORE_COMMON_POLICY_DETAILS_H_
44