| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_POLICY_DEVICE_TOKEN_FETCHER_H_ | 5 #ifndef CHROME_BROWSER_POLICY_DEVICE_TOKEN_FETCHER_H_ |
| 6 #define CHROME_BROWSER_POLICY_DEVICE_TOKEN_FETCHER_H_ | 6 #define CHROME_BROWSER_POLICY_DEVICE_TOKEN_FETCHER_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/file_path.h" | 12 #include "base/file_path.h" |
| 13 #include "base/observer_list.h" | 13 #include "base/observer_list.h" |
| 14 #include "base/ref_counted.h" | 14 #include "base/ref_counted.h" |
| 15 #include "base/waitable_event.h" | 15 #include "base/waitable_event.h" |
| 16 #include "chrome/browser/policy/device_management_backend.h" | 16 #include "chrome/browser/policy/device_management_backend.h" |
| 17 #include "chrome/common/notification_observer.h" | 17 #include "chrome/common/notification_observer.h" |
| 18 #include "chrome/common/notification_registrar.h" | 18 #include "chrome/common/notification_registrar.h" |
| 19 | 19 |
| 20 class TokenService; | 20 class Profile; |
| 21 | 21 |
| 22 namespace policy { | 22 namespace policy { |
| 23 | 23 |
| 24 namespace em = enterprise_management; | 24 namespace em = enterprise_management; |
| 25 | 25 |
| 26 // Fetches the device token that can be used for policy requests with the device | 26 // Fetches the device token that can be used for policy requests with the device |
| 27 // management server, either from disk if it already has been successfully | 27 // management server, either from disk if it already has been successfully |
| 28 // requested, otherwise from the device management server. An instance of the | 28 // requested, otherwise from the device management server. An instance of the |
| 29 // fetcher is shared as a singleton by all users of the device management token | 29 // fetcher is shared as a singleton by all users of the device management token |
| 30 // to ensure they all get the same token. | 30 // to ensure they all get the same token. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 } | 62 } |
| 63 private: | 63 private: |
| 64 DeviceTokenFetcher* token_fetcher_; | 64 DeviceTokenFetcher* token_fetcher_; |
| 65 std::vector<DeviceTokenFetcher::Observer*> observers_; | 65 std::vector<DeviceTokenFetcher::Observer*> observers_; |
| 66 }; | 66 }; |
| 67 | 67 |
| 68 // Requests to the device management server are sent through |backend|. It | 68 // Requests to the device management server are sent through |backend|. It |
| 69 // obtains the authentication token from |token_service|. The fetcher stores | 69 // obtains the authentication token from |token_service|. The fetcher stores |
| 70 // the device token to |token_path| once it's retrieved from the server. | 70 // the device token to |token_path| once it's retrieved from the server. |
| 71 DeviceTokenFetcher(DeviceManagementBackend* backend, | 71 DeviceTokenFetcher(DeviceManagementBackend* backend, |
| 72 TokenService* token_service, | 72 Profile* profile, |
| 73 const FilePath& token_path); | 73 const FilePath& token_path); |
| 74 virtual ~DeviceTokenFetcher() {} | 74 virtual ~DeviceTokenFetcher() {} |
| 75 | 75 |
| 76 // NotificationObserver method overrides: | 76 // NotificationObserver method overrides: |
| 77 virtual void Observe(NotificationType type, | 77 virtual void Observe(NotificationType type, |
| 78 const NotificationSource& source, | 78 const NotificationSource& source, |
| 79 const NotificationDetails& details); | 79 const NotificationDetails& details); |
| 80 | 80 |
| 81 // DeviceManagementBackend::DeviceRegisterResponseDelegate method overrides: | 81 // DeviceManagementBackend::DeviceRegisterResponseDelegate method overrides: |
| 82 virtual void HandleRegisterResponse( | 82 virtual void HandleRegisterResponse( |
| (...skipping 23 matching lines...) Expand all Loading... |
| 106 // Returns the device ID for this device. If no such ID has been set yet, a | 106 // Returns the device ID for this device. If no such ID has been set yet, a |
| 107 // new ID is generated and returned. | 107 // new ID is generated and returned. |
| 108 std::string GetDeviceID(); | 108 std::string GetDeviceID(); |
| 109 | 109 |
| 110 // True if the fetcher has a valid AuthToken for the device management server. | 110 // True if the fetcher has a valid AuthToken for the device management server. |
| 111 bool HasAuthToken() const { return !auth_token_.empty(); } | 111 bool HasAuthToken() const { return !auth_token_.empty(); } |
| 112 | 112 |
| 113 // True if the device token has been fetched and is valid. | 113 // True if the device token has been fetched and is valid. |
| 114 bool IsTokenValid() const; | 114 bool IsTokenValid() const; |
| 115 | 115 |
| 116 protected: |
| 117 // Returns the email address of the currently logged-in user. |
| 118 virtual std::string GetCurrentUser(); |
| 119 |
| 120 // Used to identify GOOGLE_SIGNIN_SUCCESSFUL notifications from the owning |
| 121 // profile, and to query for the current username. |
| 122 Profile* profile_; // weak |
| 123 |
| 116 private: | 124 private: |
| 117 friend class DeviceTokenFetcherTest; | 125 friend class DeviceTokenFetcherTest; |
| 118 | 126 |
| 119 // The different states that the fetcher can be in during the process of | 127 // The different states that the fetcher can be in during the process of |
| 120 // getting the device token. | 128 // getting the device token. |
| 121 enum FetcherState { | 129 enum FetcherState { |
| 122 kStateNotStarted, | 130 kStateNotStarted, |
| 123 kStateLoadDeviceTokenFromDisk, | 131 kStateLoadDeviceTokenFromDisk, |
| 124 kStateReadyToRequestDeviceTokenFromServer, | 132 kStateReadyToRequestDeviceTokenFromServer, |
| 125 kStateRequestingDeviceTokenFromServer, | 133 kStateRequestingDeviceTokenFromServer, |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 const std::string& token, | 186 const std::string& token, |
| 179 const std::string& device_id); | 187 const std::string& device_id); |
| 180 | 188 |
| 181 // Generates a new device ID used to register the device with the device | 189 // Generates a new device ID used to register the device with the device |
| 182 // management server and generate the device token. | 190 // management server and generate the device token. |
| 183 static std::string GenerateNewDeviceID(); | 191 static std::string GenerateNewDeviceID(); |
| 184 | 192 |
| 185 ObserverList<Observer, true> observer_list_; | 193 ObserverList<Observer, true> observer_list_; |
| 186 FilePath token_path_; | 194 FilePath token_path_; |
| 187 DeviceManagementBackend* backend_; // weak | 195 DeviceManagementBackend* backend_; // weak |
| 188 TokenService* token_service_; | |
| 189 FetcherState state_; | 196 FetcherState state_; |
| 190 std::string device_token_; | 197 std::string device_token_; |
| 191 std::string device_id_; | 198 std::string device_id_; |
| 192 | 199 |
| 193 // Contains the AuthToken for the device management server. Empty if the | 200 // Contains the AuthToken for the device management server. Empty if the |
| 194 // AuthToken hasn't been issued yet or that was an error getting the | 201 // AuthToken hasn't been issued yet or that was an error getting the |
| 195 // AuthToken. | 202 // AuthToken. |
| 196 std::string auth_token_; | 203 std::string auth_token_; |
| 197 | 204 |
| 198 // An event that is signaled only once the device token has been fetched | 205 // An event that is signaled only once the device token has been fetched |
| 199 // or it has been determined that there was an error during fetching. | 206 // or it has been determined that there was an error during fetching. |
| 200 base::WaitableEvent device_token_load_complete_event_; | 207 base::WaitableEvent device_token_load_complete_event_; |
| 201 | 208 |
| 202 // Registers the fetcher for notification of successful Gaia logins. | 209 // Registers the fetcher for notification of successful Gaia logins. |
| 203 NotificationRegistrar registrar_; | 210 NotificationRegistrar registrar_; |
| 204 }; | 211 }; |
| 205 | 212 |
| 206 } // namespace policy | 213 } // namespace policy |
| 207 | 214 |
| 208 #endif // CHROME_BROWSER_POLICY_DEVICE_TOKEN_FETCHER_H_ | 215 #endif // CHROME_BROWSER_POLICY_DEVICE_TOKEN_FETCHER_H_ |
| OLD | NEW |