device_local_account_external_data_manager.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/chromeos/policy/device_local_account_external_data_manager.h"
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/sequenced_task_runner.h"
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/chromeos/policy/cloud_external_data_store.h"
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "chrome/browser/chromeos/policy/device_local_account_external_data_service.h"
11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "components/policy/core/common/cloud/resource_cache.h"
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "policy/policy_constants.h"
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace policy {
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)DeviceLocalAccountExternalDataManager::DeviceLocalAccountExternalDataManager(
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    const std::string& account_id,
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    const GetChromePolicyDetailsCallback& get_policy_details,
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    scoped_refptr<base::SequencedTaskRunner> backend_task_runner,
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    scoped_refptr<base::SequencedTaskRunner> io_task_runner,
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    ResourceCache* resource_cache)
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    : CloudExternalDataManagerBase(get_policy_details,
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                   backend_task_runner,
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                   io_task_runner) {
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetExternalDataStore(make_scoped_ptr(new CloudExternalDataStore(
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      account_id, backend_task_runner, resource_cache)));
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)DeviceLocalAccountExternalDataManager::
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    ~DeviceLocalAccountExternalDataManager() {
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  SetExternalDataStore(scoped_ptr<CloudExternalDataStore>());
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void DeviceLocalAccountExternalDataManager::OnPolicyStoreLoaded() {
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  CloudExternalDataManagerBase::OnPolicyStoreLoaded();
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Proactively try to download and cache all external data referenced by
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // policies.
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  FetchAll();
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace policy
42