diff options
Diffstat (limited to 'components/policy/core/common/external_data_fetcher.h')
-rw-r--r-- | components/policy/core/common/external_data_fetcher.h | 53 |
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_ |