// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_POLICY_DEVICE_MANAGEMENT_BACKEND_IMPL_H_ #define CHROME_BROWSER_POLICY_DEVICE_MANAGEMENT_BACKEND_IMPL_H_ #pragma once #include <set> #include <string> #include "base/basictypes.h" #include "chrome/browser/policy/device_management_backend.h" namespace policy { class DeviceManagementJobBase; class DeviceManagementService; // Implements the actual backend interface. It creates device management jobs // and passes them on to the service for processing. class DeviceManagementBackendImpl : public DeviceManagementBackend { public: explicit DeviceManagementBackendImpl(DeviceManagementService* service); virtual ~DeviceManagementBackendImpl(); static std::string GetAgentString(); static std::string GetPlatformString(); // Name constants for URL query parameters. static const char kParamRequest[]; static const char kParamDeviceType[]; static const char kParamAppType[]; static const char kParamDeviceID[]; static const char kParamAgent[]; static const char kParamPlatform[]; // String constants for the device and app type we report to the server. static const char kValueRequestRegister[]; static const char kValueRequestUnregister[]; static const char kValueRequestPolicy[]; static const char kValueDeviceType[]; static const char kValueAppType[]; private: friend class DeviceManagementJobBase; typedef std::set<DeviceManagementJobBase*> JobSet; // Called by the DeviceManagementJobBase dtor so we can clean up. void JobDone(DeviceManagementJobBase* job); // Add a job to the pending job set and register it with the service (if // available). void AddJob(DeviceManagementJobBase* job); // DeviceManagementBackend overrides. virtual void ProcessRegisterRequest( const std::string& auth_token, const std::string& device_id, const em::DeviceRegisterRequest& request, DeviceRegisterResponseDelegate* response_delegate); virtual void ProcessUnregisterRequest( const std::string& device_management_token, const std::string& device_id, const em::DeviceUnregisterRequest& request, DeviceUnregisterResponseDelegate* response_delegate); virtual void ProcessPolicyRequest( const std::string& device_management_token, const std::string& device_id, const em::DevicePolicyRequest& request, DevicePolicyResponseDelegate* response_delegate); // Keeps track of the jobs currently in flight. JobSet pending_jobs_; DeviceManagementService* service_; DISALLOW_COPY_AND_ASSIGN(DeviceManagementBackendImpl); }; } // namespace policy #endif // CHROME_BROWSER_POLICY_DEVICE_MANAGEMENT_BACKEND_IMPL_H_