Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1656)

Unified Diff: chrome/browser/policy/cloud/cloud_policy_client.h

Issue 109743002: Move policy code into components/policy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: moar fixes Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/policy/cloud/cloud_policy_client.h
diff --git a/chrome/browser/policy/cloud/cloud_policy_client.h b/chrome/browser/policy/cloud/cloud_policy_client.h
deleted file mode 100644
index cd2911f2c796e4e906b37ca6f9259707319c2d05..0000000000000000000000000000000000000000
--- a/chrome/browser/policy/cloud/cloud_policy_client.h
+++ /dev/null
@@ -1,296 +0,0 @@
-// Copyright (c) 2012 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_CLOUD_CLOUD_POLICY_CLIENT_H_
-#define CHROME_BROWSER_POLICY_CLOUD_CLOUD_POLICY_CLIENT_H_
-
-#include <map>
-#include <set>
-#include <string>
-
-#include "base/basictypes.h"
-#include "base/callback.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/observer_list.h"
-#include "base/time/time.h"
-#include "chrome/browser/policy/cloud/cloud_policy_constants.h"
-#include "chrome/browser/policy/proto/cloud/device_management_backend.pb.h"
-
-namespace net {
-class URLRequestContextGetter;
-}
-
-namespace policy {
-
-class DeviceManagementRequestJob;
-class DeviceManagementService;
-
-// Implements the core logic required to talk to the device management service.
-// Also keeps track of the current state of the association with the service,
-// such as whether there is a valid registration (DMToken is present in that
-// case) and whether and what errors occurred in the latest request.
-//
-// Note that CloudPolicyClient doesn't do any validation of policy responses
-// such as signature and time stamp checks. These happen once the policy gets
-// installed in the cloud policy cache.
-class CloudPolicyClient {
- public:
- // Maps a PolicyNamespaceKey to its corresponding PolicyFetchResponse.
- typedef std::map<PolicyNamespaceKey,
- enterprise_management::PolicyFetchResponse*> ResponseMap;
-
- // A callback which receives boolean status of an operation. If the operation
- // succeeded, |status| is true.
- typedef base::Callback<void(bool status)> StatusCallback;
-
- // Observer interface for state and policy changes.
- class Observer {
- public:
- virtual ~Observer();
-
- // Called when a policy fetch completes successfully. If a policy fetch
- // triggers an error, OnClientError() will fire.
- virtual void OnPolicyFetched(CloudPolicyClient* client) = 0;
-
- // Called upon registration state changes. This callback is invoked for
- // successful completion of registration and unregistration requests.
- virtual void OnRegistrationStateChanged(CloudPolicyClient* client) = 0;
-
- // Called when a request for device robot OAuth2 authorization tokens
- // returns successfully. Only occurs during enrollment. Optional
- // (default implementation is a noop).
- virtual void OnRobotAuthCodesFetched(CloudPolicyClient* client);
-
- // Indicates there's been an error in a previously-issued request.
- virtual void OnClientError(CloudPolicyClient* client) = 0;
- };
-
- // Delegate interface for supplying status information to upload to the server
- // as part of the policy fetch request.
- class StatusProvider {
- public:
- virtual ~StatusProvider();
-
- // Retrieves status information to send with the next policy fetch.
- // Implementations must return true if status information was filled in.
- virtual bool GetDeviceStatus(
- enterprise_management::DeviceStatusReportRequest* status) = 0;
- virtual bool GetSessionStatus(
- enterprise_management::SessionStatusReportRequest* status) = 0;
-
- // Called after the status information has successfully been submitted to
- // the server.
- virtual void OnSubmittedSuccessfully() = 0;
- };
-
- // |provider| and |service| are weak pointers and it's the caller's
- // responsibility to keep them valid for the lifetime of CloudPolicyClient.
- CloudPolicyClient(
- const std::string& machine_id,
- const std::string& machine_model,
- UserAffiliation user_affiliation,
- StatusProvider* provider,
- DeviceManagementService* service,
- scoped_refptr<net::URLRequestContextGetter> request_context);
- virtual ~CloudPolicyClient();
-
- // Sets the DMToken, thereby establishing a registration with the server. A
- // policy fetch is not automatically issued but can be requested by calling
- // FetchPolicy().
- virtual void SetupRegistration(const std::string& dm_token,
- const std::string& client_id);
-
- // Attempts to register with the device management service. Results in a
- // registration change or error notification.
- virtual void Register(
- enterprise_management::DeviceRegisterRequest::Type registration_type,
- const std::string& auth_token,
- const std::string& client_id,
- bool is_auto_enrollment,
- const std::string& requisition);
-
- // Sets information about a policy invalidation. Subsequent fetch operations
- // will use the given info, and callers can use fetched_invalidation_version
- // to determine which version of policy was fetched.
- void SetInvalidationInfo(int64 version, const std::string& payload);
-
- // Requests a policy fetch. The client being registered is a prerequisite to
- // this operation and this call will CHECK if the client is not in registered
- // state. FetchPolicy() triggers a policy fetch from the cloud. A policy
- // change notification is reported to the observers and the new policy blob
- // can be retrieved once the policy fetch operation completes. In case of
- // multiple requests to fetch policy, new requests will cancel any pending
- // requests and the latest request will eventually trigger notifications.
- virtual void FetchPolicy();
-
- // Requests OAuth2 auth codes for the device robot account. The client being
- // registered is a prerequisite to this operation and this call will CHECK if
- // the client is not in registered state.
- virtual void FetchRobotAuthCodes(const std::string& auth_token);
-
- // Sends an unregistration request to the server.
- virtual void Unregister();
-
- // Upload a device certificate to the server. Like FetchPolicy, this method
- // requires that the client is in a registered state. |certificate_data| must
- // hold the X.509 certificate data to be sent to the server. The |callback|
- // will be called when the operation completes.
- virtual void UploadCertificate(const std::string& certificate_data,
- const StatusCallback& callback);
-
- // Adds an observer to be called back upon policy and state changes.
- void AddObserver(Observer* observer);
-
- // Removes the specified observer.
- void RemoveObserver(Observer* observer);
-
- void set_submit_machine_id(bool submit_machine_id) {
- submit_machine_id_ = submit_machine_id;
- }
-
- void set_last_policy_timestamp(const base::Time& timestamp) {
- last_policy_timestamp_ = timestamp;
- }
-
- void set_public_key_version(int public_key_version) {
- public_key_version_ = public_key_version;
- public_key_version_valid_ = true;
- }
-
- void clear_public_key_version() {
- public_key_version_valid_ = false;
- }
-
- // FetchPolicy() calls will request this policy namespace.
- void AddNamespaceToFetch(const PolicyNamespaceKey& policy_ns_key);
-
- // FetchPolicy() calls won't request the given policy namespace anymore.
- void RemoveNamespaceToFetch(const PolicyNamespaceKey& policy_ns_key);
-
- // Whether the client is registered with the device management service.
- bool is_registered() const { return !dm_token_.empty(); }
-
- const std::string& dm_token() const { return dm_token_; }
- const std::string& client_id() const { return client_id_; }
-
- // The device mode as received in the registration request.
- DeviceMode device_mode() const { return device_mode_; }
-
- // The policy responses as obtained by the last request to the cloud. These
- // policies haven't gone through verification, so their contents cannot be
- // trusted. Use CloudPolicyStore::policy() and CloudPolicyStore::policy_map()
- // instead for making policy decisions.
- const ResponseMap& responses() const {
- return responses_;
- }
-
- // Returns the policy response for |policy_ns_key|, if found in |responses()|;
- // otherwise returns NULL.
- const enterprise_management::PolicyFetchResponse* GetPolicyFor(
- const PolicyNamespaceKey& policy_ns_key) const;
-
- DeviceManagementStatus status() const {
- return status_;
- }
-
- const std::string& robot_api_auth_code() const {
- return robot_api_auth_code_;
- }
-
- // Returns the invalidation version that was used for the last FetchPolicy.
- // Observers can call this method from their OnPolicyFetched method to
- // determine which at which invalidation version the policy was fetched.
- int64 fetched_invalidation_version() const {
- return fetched_invalidation_version_;
- }
-
- scoped_refptr<net::URLRequestContextGetter> GetRequestContext();
-
- protected:
- // A set of PolicyNamespaceKeys to fetch.
- typedef std::set<PolicyNamespaceKey> NamespaceSet;
-
- // Callback for retries of registration requests.
- void OnRetryRegister(DeviceManagementRequestJob* job);
-
- // Callback for registration requests.
- void OnRegisterCompleted(
- DeviceManagementStatus status,
- int net_error,
- const enterprise_management::DeviceManagementResponse& response);
-
- // Callback for policy fetch requests.
- void OnPolicyFetchCompleted(
- DeviceManagementStatus status,
- int net_error,
- const enterprise_management::DeviceManagementResponse& response);
-
- // Callback for robot account api authorization requests.
- void OnFetchRobotAuthCodesCompleted(
- DeviceManagementStatus status,
- int net_error,
- const enterprise_management::DeviceManagementResponse& response);
-
- // Callback for unregistration requests.
- void OnUnregisterCompleted(
- DeviceManagementStatus status,
- int net_error,
- const enterprise_management::DeviceManagementResponse& response);
-
- // Callback for certificate upload requests.
- void OnCertificateUploadCompleted(
- const StatusCallback& callback,
- DeviceManagementStatus status,
- int net_error,
- const enterprise_management::DeviceManagementResponse& response);
-
- // Observer notification helpers.
- void NotifyPolicyFetched();
- void NotifyRegistrationStateChanged();
- void NotifyRobotAuthCodesFetched();
- void NotifyClientError();
-
- // Data necessary for constructing policy requests.
- const std::string machine_id_;
- const std::string machine_model_;
- const UserAffiliation user_affiliation_;
- NamespaceSet namespaces_to_fetch_;
-
- std::string dm_token_;
- DeviceMode device_mode_;
- std::string client_id_;
- bool submit_machine_id_;
- base::Time last_policy_timestamp_;
- int public_key_version_;
- bool public_key_version_valid_;
- std::string robot_api_auth_code_;
-
- // Information for the latest policy invalidation received.
- int64 invalidation_version_;
- std::string invalidation_payload_;
-
- // The invalidation version used for the most recent fetch operation.
- int64 fetched_invalidation_version_;
-
- // Used for issuing requests to the cloud.
- DeviceManagementService* service_;
- scoped_ptr<DeviceManagementRequestJob> request_job_;
-
- // Status upload data is produced by |status_provider_|.
- StatusProvider* status_provider_;
-
- // The policy responses returned by the last policy fetch operation.
- ResponseMap responses_;
- DeviceManagementStatus status_;
-
- ObserverList<Observer, true> observers_;
- scoped_refptr<net::URLRequestContextGetter> request_context_;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(CloudPolicyClient);
-};
-
-} // namespace policy
-
-#endif // CHROME_BROWSER_POLICY_CLOUD_CLOUD_POLICY_CLIENT_H_
« no previous file with comments | « chrome/browser/policy/cloud/cloud_policy_browsertest.cc ('k') | chrome/browser/policy/cloud/cloud_policy_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698