1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef COMPONENTS_POLICY_CORE_COMMON_CLOUD_POLICY_HEADER_SERVICE_H_
6 #define COMPONENTS_POLICY_CORE_COMMON_CLOUD_POLICY_HEADER_SERVICE_H_
11 #include "base/memory/ref_counted.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "components/policy/core/common/cloud/cloud_policy_store.h"
14 #include "components/policy/policy_export.h"
17 class SequencedTaskRunner
;
22 class PolicyHeaderIOHelper
;
24 // Per-profile service used to generate PolicyHeaderIOHelper objects, and
25 // keep them up-to-date as policy changes.
26 // TODO(atwilson): Move to components/policy once CloudPolicyStore is moved.
27 class POLICY_EXPORT PolicyHeaderService
: public CloudPolicyStore::Observer
{
29 // |device_policy_store| can be null on platforms that do not support
30 // device policy. Both |user_policy_store| and |device_policy_store| must
31 // outlive this object.
32 PolicyHeaderService(const std::string
& server_url
,
33 const std::string
& verification_key_hash
,
34 CloudPolicyStore
* user_policy_store
,
35 CloudPolicyStore
* device_policy_store
);
36 ~PolicyHeaderService() override
;
38 // Creates a PolicyHeaderIOHelper object to be run on the IO thread and
39 // add policy headers to outgoing requests. The caller takes ownership of
40 // this object and must ensure it outlives ProfileHeaderService (in practice,
41 // this is called by ProfileIOData, which is shutdown *after* all
42 // ProfileKeyedServices are shutdown).
43 scoped_ptr
<PolicyHeaderIOHelper
> CreatePolicyHeaderIOHelper(
44 scoped_refptr
<base::SequencedTaskRunner
> task_runner
);
46 // Overridden CloudPolicyStore::Observer methods:
47 void OnStoreLoaded(CloudPolicyStore
* store
) override
;
48 void OnStoreError(CloudPolicyStore
* store
) override
;
50 // Returns a list of all PolicyHeaderIOHelpers created by this object.
51 std::vector
<PolicyHeaderIOHelper
*> GetHelpersForTest();
54 // Generate a policy header based on the currently loaded policy.
55 std::string
CreateHeaderValue();
57 // Weak pointer to created PolicyHeaderIOHelper objects.
58 std::vector
<PolicyHeaderIOHelper
*> helpers_
;
60 // URL of the policy server.
61 std::string server_url_
;
63 // Identifier for the verification key this Chrome instance is using.
64 std::string verification_key_hash_
;
66 // Weak pointers to User-/Device-level policy stores.
67 CloudPolicyStore
* user_policy_store_
;
68 CloudPolicyStore
* device_policy_store_
;
70 DISALLOW_COPY_AND_ASSIGN(PolicyHeaderService
);
75 #endif // COMPONENTS_POLICY_CORE_COMMON_CLOUD_POLICY_HEADER_SERVICE_H_