1ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file. 47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#ifndef COMPONENTS_POLICY_CORE_COMMON_CLOUD_USER_CLOUD_POLICY_STORE_BASE_H_ 67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#define COMPONENTS_POLICY_CORE_COMMON_CLOUD_USER_CLOUD_POLICY_STORE_BASE_H_ 77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include <string> 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/basictypes.h" 117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/memory/ref_counted.h" 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/memory/weak_ptr.h" 147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "components/policy/core/common/cloud/cloud_policy_store.h" 157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "components/policy/core/common/cloud/cloud_policy_validator.h" 167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "components/policy/policy_export.h" 177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace base { 197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class SequencedTaskRunner; 20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace policy { 237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 2468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Base class that implements common cross-platform UserCloudPolicyStore 25ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// functionality. 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class POLICY_EXPORT UserCloudPolicyStoreBase : public CloudPolicyStore { 277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) public: 287d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) explicit UserCloudPolicyStoreBase( 29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_refptr<base::SequencedTaskRunner> background_task_runner); 30ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch virtual ~UserCloudPolicyStoreBase(); 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) protected: 337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Creates a validator configured to validate a user policy. The caller owns 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // the resulting object until StartValidation() is invoked. 357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) scoped_ptr<UserCloudPolicyValidator> CreateValidator( 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) scoped_ptr<enterprise_management::PolicyFetchResponse> policy, 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CloudPolicyValidatorBase::ValidateTimestampOption option); 387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Sets |policy_data| and |payload| as the active policy. 407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) void InstallPolicy( 417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) scoped_ptr<enterprise_management::PolicyData> policy_data, 427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) scoped_ptr<enterprise_management::CloudPolicySettings> payload); 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) scoped_refptr<base::SequencedTaskRunner> background_task_runner() const { 457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return background_task_runner_; 467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) } 477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) private: 497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) // Task runner for background file operations. 507d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) scoped_refptr<base::SequencedTaskRunner> background_task_runner_; 517d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(UserCloudPolicyStoreBase); 537d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}; 547d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 557d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} // namespace policy 567d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 577d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif // COMPONENTS_POLICY_CORE_COMMON_CLOUD_USER_CLOUD_POLICY_STORE_BASE_H_ 587d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)