diff options
Diffstat (limited to 'chrome/browser/policy/device_management_backend_impl.h')
-rw-r--r-- | chrome/browser/policy/device_management_backend_impl.h | 68 |
1 files changed, 24 insertions, 44 deletions
diff --git a/chrome/browser/policy/device_management_backend_impl.h b/chrome/browser/policy/device_management_backend_impl.h index 648ca55..aa43681 100644 --- a/chrome/browser/policy/device_management_backend_impl.h +++ b/chrome/browser/policy/device_management_backend_impl.h @@ -6,29 +6,37 @@ #define CHROME_BROWSER_POLICY_DEVICE_MANAGEMENT_BACKEND_IMPL_H_ #pragma once -#include <map> +#include <set> #include <string> +#include "base/basictypes.h" #include "chrome/browser/policy/device_management_backend.h" -#include "chrome/common/net/url_fetcher.h" -#include "googleurl/src/gurl.h" - -class URLRequestContextGetter; namespace policy { -class ResponseHandler; -class URLQueryParameters; +class DeviceManagementService; +class DeviceManagementJobBase; -// Device management backend implementation. This implementation makes HTTP -// requests to the policy server through the net layer. -class DeviceManagementBackendImpl : public DeviceManagementBackend, - public URLFetcher::Delegate { +// 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(const std::string& server_url); + explicit DeviceManagementBackendImpl(DeviceManagementService* service); virtual ~DeviceManagementBackendImpl(); - // GoogleAppsPolicyService overrides: + 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, @@ -43,38 +51,10 @@ class DeviceManagementBackendImpl : public DeviceManagementBackend, const em::DevicePolicyRequest& request, DevicePolicyResponseDelegate* response_delegate); - // Get the agent string (used for HTTP user agent and as agent passed to the - // server). - static std::string GetAgentString(); - - private: - typedef std::map<const URLFetcher*, ResponseHandler*> ResponseHandlerMap; - - // URLFetcher::Delegate override. - virtual void OnURLFetchComplete(const URLFetcher* source, - const GURL& url, - const URLRequestStatus& status, - int response_code, - const ResponseCookies& cookies, - const std::string& data); - - // Create a URLFetcher for a given request message and response handler. - void CreateFetcher(const em::DeviceManagementRequest& request, - ResponseHandler* handler, - const std::string& query_params, - const std::string& extra_headers); - - // Fill in the common query parameters. - void PutCommonQueryParameters(URLQueryParameters* params); - - // Server at which to contact the service. - const std::string server_url_; - - // The request context we use. - scoped_refptr<URLRequestContextGetter> request_context_getter_; + // Keeps track of the jobs currently in flight. + JobSet pending_jobs_; - // Keeps track of all in-flight requests an their response handlers. - ResponseHandlerMap response_handlers_; + DeviceManagementService* service_; DISALLOW_COPY_AND_ASSIGN(DeviceManagementBackendImpl); }; |