17dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
27dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
37dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// found in the LICENSE file.
47dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/external_data_fetcher.h"
67dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
77dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/callback.h"
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "components/policy/core/common/external_data_manager.h"
97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
107dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochnamespace policy {
117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
129ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben MurdochExternalDataFetcher::ExternalDataFetcher(
139ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    base::WeakPtr<ExternalDataManager> manager,
149ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    const std::string& policy)
159ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    : manager_(manager),
169ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch      policy_(policy) {
179ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch}
189ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch
197dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochExternalDataFetcher::ExternalDataFetcher(const ExternalDataFetcher& other)
207dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    : manager_(other.manager_),
217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch      policy_(other.policy_) {
227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
237dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
247dbb3d5cf0c15f500944d211057644d6a2f37371Ben MurdochExternalDataFetcher::~ExternalDataFetcher() {
257dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
267dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// static
287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochbool ExternalDataFetcher::Equals(const ExternalDataFetcher* first,
297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch                                 const ExternalDataFetcher* second) {
307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  if (!first && !second)
317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    return true;
327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  if (!first || !second)
337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    return false;
347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return first->manager_.get() == second->manager_.get() &&
357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch         first->policy_ == second->policy_;
367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochvoid ExternalDataFetcher::Fetch(const FetchCallback& callback) const {
397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  if (manager_)
407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch    manager_->Fetch(policy_, callback);
417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  else
429ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch    callback.Run(scoped_ptr<std::string>());
437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}
447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch
457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch}  // namespace policy
46