| Index: chrome/browser/policy/device_policy_identity_strategy.h
|
| diff --git a/chrome/browser/policy/device_policy_identity_strategy.h b/chrome/browser/policy/device_policy_identity_strategy.h
|
| index 838124d469ce9f00fd2caed7534914839bddc3d8..913a2a3e59660b7b2ff88e74c558ec7d8e1b7e70 100644
|
| --- a/chrome/browser/policy/device_policy_identity_strategy.h
|
| +++ b/chrome/browser/policy/device_policy_identity_strategy.h
|
| @@ -8,6 +8,8 @@
|
|
|
| #include <string>
|
|
|
| +#include "base/ref_counted.h"
|
| +#include "base/weak_ptr.h"
|
| #include "chrome/browser/policy/cloud_policy_identity_strategy.h"
|
| #include "chrome/common/notification_observer.h"
|
| #include "chrome/common/notification_registrar.h"
|
| @@ -21,20 +23,32 @@ class DevicePolicyIdentityStrategy : public CloudPolicyIdentityStrategy,
|
| public NotificationObserver {
|
| public:
|
| DevicePolicyIdentityStrategy();
|
| - virtual ~DevicePolicyIdentityStrategy() {}
|
| + virtual ~DevicePolicyIdentityStrategy();
|
| +
|
| + // Called by DevicePolicyIdentityStrategy::OwnershipChecker:
|
| + virtual void OnOwnershipInformationAvailable(bool current_user_is_owner);
|
|
|
| // CloudPolicyIdentityStrategy implementation:
|
| virtual std::string GetDeviceToken();
|
| virtual std::string GetDeviceID();
|
| + virtual std::string GetMachineID();
|
| + virtual em::DeviceRegisterRequest_Type GetPolicyRegisterType();
|
| + virtual std::string GetPolicyType();
|
| virtual bool GetCredentials(std::string* username,
|
| std::string* auth_token);
|
| virtual void OnDeviceTokenAvailable(const std::string& token);
|
|
|
| private:
|
| + class OwnershipChecker;
|
| +
|
| // Recheck whether all parameters are available and if so, trigger a
|
| // credentials changed notification.
|
| void CheckAndTriggerFetch();
|
|
|
| + // Updates the ownership information and then passes control to
|
| + // |CheckAndTriggerFetch|.
|
| + void CheckOwnershipAndTriggerFetch();
|
| +
|
| // NotificationObserver method overrides:
|
| virtual void Observe(NotificationType type,
|
| const NotificationSource& source,
|
| @@ -43,17 +57,27 @@ class DevicePolicyIdentityStrategy : public CloudPolicyIdentityStrategy,
|
| // The machine identifier.
|
| std::string machine_id_;
|
|
|
| + // The device identifier to be sent with requests. (This is actually more like
|
| + // a session identifier since it is re-generated for each registration
|
| + // request.)
|
| + std::string device_id_;
|
| +
|
| // Current token. Empty if not available.
|
| std::string device_token_;
|
|
|
| - // Whether to try and register. Device policy enrollment does not happen
|
| - // automatically except for the case that the device gets claimed. This
|
| - // situation is detected by listening for the OWNERSHIP_TAKEN notification.
|
| - bool should_register_;
|
| + // Whether the currently logged in user is the device's owner. This variable
|
| + // is owned by the UI thread but updated from the FILE thread. Therefore
|
| + // after an owner login it will take some time before it turns to true.
|
| + bool current_user_is_owner_;
|
|
|
| // Registers the provider for notification of successful Gaia logins.
|
| NotificationRegistrar registrar_;
|
|
|
| + scoped_refptr<OwnershipChecker> ownership_checker_;
|
| +
|
| + // Allows to construct weak ptrs.
|
| + base::WeakPtrFactory<DevicePolicyIdentityStrategy> weak_ptr_factory_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(DevicePolicyIdentityStrategy);
|
| };
|
|
|
|
|