11ae29591efbb29492ce05378909ccf4028d7c1eeBehdad Esfahbod// Copyright 2013 The Chromium Authors. All rights reserved.
27ed91eca1eaa96b79eae780778e89bb9ec44c1eeBehdad Esfahbod// Use of this source code is governed by a BSD-style license that can be
3d0a31f5a43c4743671c4941fe45dda059aada0beBehdad Esfahbod// found in the LICENSE file.
47842e56b97ce677b83bdab09cda48bc2d89ac75aJust
5e388db566b9ba42669c7e353db4293cf27bc2a5bBehdad Esfahbod#include "chrome/browser/chromeos/policy/user_cloud_external_data_manager.h"
67842e56b97ce677b83bdab09cda48bc2d89ac75aJust
77842e56b97ce677b83bdab09cda48bc2d89ac75aJust#include "base/location.h"
87842e56b97ce677b83bdab09cda48bc2d89ac75aJust#include "base/memory/scoped_ptr.h"
9d0a31f5a43c4743671c4941fe45dda059aada0beBehdad Esfahbod#include "base/sequenced_task_runner.h"
10d0a31f5a43c4743671c4941fe45dda059aada0beBehdad Esfahbod#include "chrome/browser/chromeos/policy/cloud_external_data_store.h"
11d0a31f5a43c4743671c4941fe45dda059aada0beBehdad Esfahbod#include "components/policy/core/common/cloud/cloud_policy_store.h"
12960280bbd6277b56be45595a050a720a49fd5917Behdad Esfahbod#include "components/policy/core/common/cloud/resource_cache.h"
137842e56b97ce677b83bdab09cda48bc2d89ac75aJust
147842e56b97ce677b83bdab09cda48bc2d89ac75aJustnamespace policy {
157842e56b97ce677b83bdab09cda48bc2d89ac75aJust
167842e56b97ce677b83bdab09cda48bc2d89ac75aJustnamespace {
177842e56b97ce677b83bdab09cda48bc2d89ac75aJust
187842e56b97ce677b83bdab09cda48bc2d89ac75aJustconst char kCacheKey[] = "data";
197842e56b97ce677b83bdab09cda48bc2d89ac75aJust
2081acddadbd0384e105becc1eac292e50e21084a5Behdad Esfahbod}  // namespace
21f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust
22f8fd4777d273836a1222b72f6761cb6fdf9ec87aJustUserCloudExternalDataManager::UserCloudExternalDataManager(
23f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust    const GetChromePolicyDetailsCallback& get_policy_details,
24f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust    scoped_refptr<base::SequencedTaskRunner> backend_task_runner,
25f8fd4777d273836a1222b72f6761cb6fdf9ec87aJust    scoped_refptr<base::SequencedTaskRunner> io_task_runner,
267842e56b97ce677b83bdab09cda48bc2d89ac75aJust    const base::FilePath& cache_path,
277842e56b97ce677b83bdab09cda48bc2d89ac75aJust    CloudPolicyStore* policy_store)
287842e56b97ce677b83bdab09cda48bc2d89ac75aJust    : CloudExternalDataManagerBase(get_policy_details,
297842e56b97ce677b83bdab09cda48bc2d89ac75aJust                                   backend_task_runner,
307842e56b97ce677b83bdab09cda48bc2d89ac75aJust                                   io_task_runner),
317842e56b97ce677b83bdab09cda48bc2d89ac75aJust      resource_cache_(new ResourceCache(cache_path, backend_task_runner)) {
323a9fd301808f5a8991ca9ac44028d1ecb22d307fBehdad Esfahbod  SetPolicyStore(policy_store);
337842e56b97ce677b83bdab09cda48bc2d89ac75aJust  SetExternalDataStore(make_scoped_ptr(new CloudExternalDataStore(
347842e56b97ce677b83bdab09cda48bc2d89ac75aJust      kCacheKey, backend_task_runner, resource_cache_)));
35180ace6a5ff1399ec53bc696e8bef7cce6eef39aBehdad Esfahbod}
36cd5aad92f23737ff93a110d5c73d624658a28da8Behdad Esfahbod
377842e56b97ce677b83bdab09cda48bc2d89ac75aJustUserCloudExternalDataManager::~UserCloudExternalDataManager() {
387842e56b97ce677b83bdab09cda48bc2d89ac75aJust  SetExternalDataStore(scoped_ptr<CloudExternalDataStore>());
397842e56b97ce677b83bdab09cda48bc2d89ac75aJust  backend_task_runner_->DeleteSoon(FROM_HERE, resource_cache_);
407842e56b97ce677b83bdab09cda48bc2d89ac75aJust}
417842e56b97ce677b83bdab09cda48bc2d89ac75aJust
428ea6439d3b66c5acc246261d761d4375bcb7cfabBehdad Esfahbod}  // namespace policy
438ea6439d3b66c5acc246261d761d4375bcb7cfabBehdad Esfahbod