summaryrefslogtreecommitdiffstats
path: root/chrome/browser/policy/device_management_backend_impl.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/policy/device_management_backend_impl.h')
-rw-r--r--chrome/browser/policy/device_management_backend_impl.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/chrome/browser/policy/device_management_backend_impl.h b/chrome/browser/policy/device_management_backend_impl.h
new file mode 100644
index 0000000..648ca55
--- /dev/null
+++ b/chrome/browser/policy/device_management_backend_impl.h
@@ -0,0 +1,84 @@
+// Copyright (c) 2010 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 <map>
+#include <string>
+
+#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;
+
+// Device management backend implementation. This implementation makes HTTP
+// requests to the policy server through the net layer.
+class DeviceManagementBackendImpl : public DeviceManagementBackend,
+ public URLFetcher::Delegate {
+ public:
+ explicit DeviceManagementBackendImpl(const std::string& server_url);
+ virtual ~DeviceManagementBackendImpl();
+
+ // GoogleAppsPolicyService 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 em::DeviceUnregisterRequest& request,
+ DeviceUnregisterResponseDelegate* response_delegate);
+ virtual void ProcessPolicyRequest(
+ const std::string& device_management_token,
+ 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 all in-flight requests an their response handlers.
+ ResponseHandlerMap response_handlers_;
+
+ DISALLOW_COPY_AND_ASSIGN(DeviceManagementBackendImpl);
+};
+
+} // namespace policy
+
+#endif // CHROME_BROWSER_POLICY_DEVICE_MANAGEMENT_BACKEND_IMPL_H_