Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / components / policy / core / common / external_data_manager.h
blob406cf596bb99bf5e0fc5f9c3e8bbd88b61103788
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.
5 #ifndef COMPONENTS_POLICY_CORE_COMMON_EXTERNAL_DATA_MANAGER_H_
6 #define COMPONENTS_POLICY_CORE_COMMON_EXTERNAL_DATA_MANAGER_H_
8 #include <string>
10 #include "components/policy/core/common/external_data_fetcher.h"
11 #include "components/policy/policy_export.h"
13 namespace policy {
15 // Downloads, verifies, caches and retrieves external data referenced by
16 // policies.
17 // An implementation of this abstract interface should be provided for each
18 // policy source (cloud policy, platform policy) that supports external data
19 // references.
20 class POLICY_EXPORT ExternalDataManager {
21 public:
22 // Retrieves the external data referenced by |policy| and invokes |callback|
23 // with the result. If |policy| does not reference any external data, the
24 // |callback| is invoked with a NULL pointer. Otherwise, the |callback| is
25 // invoked with the referenced data once it has been successfully retrieved.
26 // If retrieval is temporarily impossible (e.g. no network connectivity), the
27 // |callback| will be invoked when the temporary hindrance is resolved. If
28 // retrieval is permanently impossible (e.g. |policy| references data that
29 // does not exist on the server), the |callback| will never be invoked.
30 virtual void Fetch(const std::string& policy,
31 const ExternalDataFetcher::FetchCallback& callback) = 0;
34 } // namespace policy
36 #endif // COMPONENTS_POLICY_CORE_COMMON_EXTERNAL_DATA_MANAGER_H_