summaryrefslogtreecommitdiff
path: root/components/policy/core/common/external_data_fetcher.h
diff options
context:
space:
mode:
Diffstat (limited to 'components/policy/core/common/external_data_fetcher.h')
-rw-r--r--components/policy/core/common/external_data_fetcher.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/components/policy/core/common/external_data_fetcher.h b/components/policy/core/common/external_data_fetcher.h
new file mode 100644
index 0000000000..0c014e794b
--- /dev/null
+++ b/components/policy/core/common/external_data_fetcher.h
@@ -0,0 +1,53 @@
+// Copyright 2013 The Chromium 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 COMPONENTS_POLICY_CORE_COMMON_EXTERNAL_DATA_FETCHER_H_
+#define COMPONENTS_POLICY_CORE_COMMON_EXTERNAL_DATA_FETCHER_H_
+
+#include <memory>
+#include <string>
+
+#include "base/callback_forward.h"
+#include "base/memory/weak_ptr.h"
+#include "components/policy/policy_export.h"
+
+namespace policy {
+
+class ExternalDataManager;
+
+// A helper that encapsulates the parameters required to retrieve the external
+// data for a policy.
+class POLICY_EXPORT ExternalDataFetcher {
+ public:
+ typedef base::Callback<void(std::unique_ptr<std::string>)> FetchCallback;
+
+ // This instance's Fetch() method will instruct the |manager| to retrieve the
+ // external data referenced by the given |policy|.
+ ExternalDataFetcher(base::WeakPtr<ExternalDataManager> manager,
+ const std::string& policy);
+ ExternalDataFetcher(const ExternalDataFetcher& other);
+
+ ~ExternalDataFetcher();
+
+ static bool Equals(const ExternalDataFetcher* first,
+ const ExternalDataFetcher* second);
+
+ // Retrieves the external data referenced by |policy_| and invokes |callback|
+ // with the result. If |policy_| does not reference any external data, the
+ // |callback| is invoked with a NULL pointer. Otherwise, the |callback| is
+ // invoked with the referenced data once it has been successfully retrieved.
+ // If retrieval is temporarily impossible (e.g. no network connectivity), the
+ // |callback| will be invoked when the temporary hindrance is resolved. If
+ // retrieval is permanently impossible (e.g. |policy_| references data that
+ // does not exist on the server), the |callback| will never be invoked.
+ void Fetch(const FetchCallback& callback) const;
+
+ private:
+ base::WeakPtr<ExternalDataManager> manager_;
+ const std::string policy_;
+};
+
+} // namespace policy
+
+#endif // COMPONENTS_POLICY_CORE_COMMON_EXTERNAL_DATA_FETCHER_H_