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

Side by Side Diff: chromeos/dbus/session_manager_client.h

Issue 2801993002: Abandon user sign in when policy is retrieved before session started (Closed)
Patch Set: Fixed review comments Created 3 years, 7 months 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 CHROMEOS_DBUS_SESSION_MANAGER_CLIENT_H_ 5 #ifndef CHROMEOS_DBUS_SESSION_MANAGER_CLIENT_H_
6 #define CHROMEOS_DBUS_SESSION_MANAGER_CLIENT_H_ 6 #define CHROMEOS_DBUS_SESSION_MANAGER_CLIENT_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 10 matching lines...) Expand all
21 21
22 namespace cryptohome { 22 namespace cryptohome {
23 class Identification; 23 class Identification;
24 } 24 }
25 25
26 namespace chromeos { 26 namespace chromeos {
27 27
28 // SessionManagerClient is used to communicate with the session manager. 28 // SessionManagerClient is used to communicate with the session manager.
29 class CHROMEOS_EXPORT SessionManagerClient : public DBusClient { 29 class CHROMEOS_EXPORT SessionManagerClient : public DBusClient {
30 public: 30 public:
31 // The result type received from session manager on request to retrieve the
32 // policy. Used to define the buckets for an enumerated UMA histogram.
33 // Hence,
34 // (a) existing enumerated constants should never be deleted or reordered.
35 // (b) new constants should be inserted immediately before COUNT.
36 enum class RetrievePolicyResponseType {
37 OTHER_ERROR = 0, // Other type of error while retrieving policy
38 // data (e.g. D-Bus timeout).
Alexei Svitkine (slow) 2017/04/25 14:41:41 Nit: For longer comments like these, just put them
igorcov 2017/04/26 11:34:31 Done.
39 SUCCESS = 1, // The policy was retrieved successfully.
40 SESSION_DOES_NOT_EXIST = 2, // Retrieve policy request issued before
41 // session started.
42 POLICY_ENCODE_ERROR = 3, // Session manager failed to encode the policy
43 // data.
44 COUNT // Has to be the last value of enumeration.
45 // Used for UMA.
46 };
47
31 // Interface for observing changes from the session manager. 48 // Interface for observing changes from the session manager.
32 class Observer { 49 class Observer {
33 public: 50 public:
34 virtual ~Observer() {} 51 virtual ~Observer() {}
35 52
36 // Called when the owner key is set. 53 // Called when the owner key is set.
37 virtual void OwnerKeySet(bool success) {} 54 virtual void OwnerKeySet(bool success) {}
38 55
39 // Called when the property change is complete. 56 // Called when the property change is complete.
40 virtual void PropertyChangeComplete(bool success) {} 57 virtual void PropertyChangeComplete(bool success) {}
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 // Enumerates active user sessions. Usually Chrome naturally keeps track of 153 // Enumerates active user sessions. Usually Chrome naturally keeps track of
137 // active users when they are added into current session. When Chrome is 154 // active users when they are added into current session. When Chrome is
138 // restarted after crash by session_manager it only receives cryptohome id and 155 // restarted after crash by session_manager it only receives cryptohome id and
139 // user_id_hash for one user. This method is used to retrieve list of all 156 // user_id_hash for one user. This method is used to retrieve list of all
140 // active users. 157 // active users.
141 virtual void RetrieveActiveSessions( 158 virtual void RetrieveActiveSessions(
142 const ActiveSessionsCallback& callback) = 0; 159 const ActiveSessionsCallback& callback) = 0;
143 160
144 // Used for RetrieveDevicePolicy, RetrievePolicyForUser and 161 // Used for RetrieveDevicePolicy, RetrievePolicyForUser and
145 // RetrieveDeviceLocalAccountPolicy. Takes a serialized protocol buffer as 162 // RetrieveDeviceLocalAccountPolicy. Takes a serialized protocol buffer as
146 // string. Upon success, we will pass a protobuf to the callback. On 163 // string. Upon success, we will pass a protobuf and SUCCESS |response_type|
147 // failure, we will pass "". 164 // to the callback. On failure, we will pass "" and the details of error type
165 // in |response_type|.
148 using RetrievePolicyCallback = 166 using RetrievePolicyCallback =
149 base::Callback<void(const std::string& protobuf)>; 167 base::Callback<void(const std::string& protobuf,
168 RetrievePolicyResponseType response_type)>;
150 169
151 // Fetches the device policy blob stored by the session manager. Upon 170 // Fetches the device policy blob stored by the session manager. Upon
152 // completion of the retrieve attempt, we will call the provided callback. 171 // completion of the retrieve attempt, we will call the provided callback.
153 virtual void RetrieveDevicePolicy(const RetrievePolicyCallback& callback) = 0; 172 virtual void RetrieveDevicePolicy(const RetrievePolicyCallback& callback) = 0;
154 173
155 // Same as RetrieveDevicePolicy() but blocks until a reply is received, and 174 // Same as RetrieveDevicePolicy() but blocks until a reply is received, and
156 // returns the policy synchronously. Returns an empty string if the method 175 // populates the policy synchronously. Returns SUCCESS when successful, or
157 // call fails. 176 // the corresponding error from enum in case of a failure.
158 // This may only be called in situations where blocking the UI thread is 177 // This may only be called in situations where blocking the UI thread is
159 // considered acceptable (e.g. restarting the browser after a crash or after 178 // considered acceptable (e.g. restarting the browser after a crash or after
160 // a flag change). 179 // a flag change).
161 // TODO: Get rid of blocking calls (crbug.com/160522). 180 // TODO: Get rid of blocking calls (crbug.com/160522).
162 virtual std::string BlockingRetrieveDevicePolicy() = 0; 181 virtual RetrievePolicyResponseType BlockingRetrieveDevicePolicy(
182 std::string* policy_out) = 0;
163 183
164 // Fetches the user policy blob stored by the session manager for the given 184 // Fetches the user policy blob stored by the session manager for the given
165 // |cryptohome_id|. Upon completion of the retrieve attempt, we will call the 185 // |cryptohome_id|. Upon completion of the retrieve attempt, we will call the
166 // provided callback. 186 // provided callback.
167 virtual void RetrievePolicyForUser( 187 virtual void RetrievePolicyForUser(
168 const cryptohome::Identification& cryptohome_id, 188 const cryptohome::Identification& cryptohome_id,
169 const RetrievePolicyCallback& callback) = 0; 189 const RetrievePolicyCallback& callback) = 0;
170 190
171 // Same as RetrievePolicyForUser() but blocks until a reply is received, and 191 // Same as RetrievePolicyForUser() but blocks until a reply is received, and
172 // returns the policy synchronously. Returns an empty string if the method 192 // populates the policy synchronously. Returns SUCCESS when successful, or
173 // call fails. 193 // the corresponding error from enum in case of a failure.
174 // This may only be called in situations where blocking the UI thread is 194 // This may only be called in situations where blocking the UI thread is
175 // considered acceptable (e.g. restarting the browser after a crash or after 195 // considered acceptable (e.g. restarting the browser after a crash or after
176 // a flag change). 196 // a flag change).
177 // TODO: Get rid of blocking calls (crbug.com/160522). 197 // TODO: Get rid of blocking calls (crbug.com/160522).
178 virtual std::string BlockingRetrievePolicyForUser( 198 virtual RetrievePolicyResponseType BlockingRetrievePolicyForUser(
179 const cryptohome::Identification& cryptohome_id) = 0; 199 const cryptohome::Identification& cryptohome_id,
200 std::string* policy_out) = 0;
180 201
181 // Fetches the policy blob associated with the specified device-local account 202 // Fetches the policy blob associated with the specified device-local account
182 // from session manager. |callback| is invoked up on completion. 203 // from session manager. |callback| is invoked up on completion.
183 virtual void RetrieveDeviceLocalAccountPolicy( 204 virtual void RetrieveDeviceLocalAccountPolicy(
184 const std::string& account_id, 205 const std::string& account_id,
185 const RetrievePolicyCallback& callback) = 0; 206 const RetrievePolicyCallback& callback) = 0;
186 207
187 // Same as RetrieveDeviceLocalAccountPolicy() but blocks until a reply is 208 // Same as RetrieveDeviceLocalAccountPolicy() but blocks until a reply is
188 // received, and returns the policy synchronously. 209 // received, and populates the policy synchronously. Returns SUCCESS when
189 // Returns an empty string if the method call fails. 210 // successful, or the corresponding error from enum in case of a failure.
190 // This may only be called in situations where blocking the UI thread is 211 // This may only be called in situations where blocking the UI thread is
191 // considered acceptable (e.g. restarting the browser after a crash or after 212 // considered acceptable (e.g. restarting the browser after a crash or after
192 // a flag change). 213 // a flag change).
193 // TODO: Get rid of blocking calls (crbug.com/160522). 214 // TODO: Get rid of blocking calls (crbug.com/160522).
194 virtual std::string BlockingRetrieveDeviceLocalAccountPolicy( 215 virtual RetrievePolicyResponseType BlockingRetrieveDeviceLocalAccountPolicy(
195 const std::string& account_id) = 0; 216 const std::string& account_id,
217 std::string* policy_out) = 0;
196 218
197 // Used for StoreDevicePolicy, StorePolicyForUser and 219 // Used for StoreDevicePolicy, StorePolicyForUser and
198 // StoreDeviceLocalAccountPolicy. Takes a boolean indicating whether the 220 // StoreDeviceLocalAccountPolicy. Takes a boolean indicating whether the
199 // operation was successful or not. 221 // operation was successful or not.
200 using StorePolicyCallback = base::Callback<void(bool success)>; 222 using StorePolicyCallback = base::Callback<void(bool success)>;
201 223
202 // Attempts to asynchronously store |policy_blob| as device policy. Upon 224 // Attempts to asynchronously store |policy_blob| as device policy. Upon
203 // completion of the store attempt, we will call callback. 225 // completion of the store attempt, we will call callback.
204 virtual void StoreDevicePolicy(const std::string& policy_blob, 226 virtual void StoreDevicePolicy(const std::string& policy_blob,
205 const StorePolicyCallback& callback) = 0; 227 const StorePolicyCallback& callback) = 0;
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 // Create() should be used instead. 336 // Create() should be used instead.
315 SessionManagerClient(); 337 SessionManagerClient();
316 338
317 private: 339 private:
318 DISALLOW_COPY_AND_ASSIGN(SessionManagerClient); 340 DISALLOW_COPY_AND_ASSIGN(SessionManagerClient);
319 }; 341 };
320 342
321 } // namespace chromeos 343 } // namespace chromeos
322 344
323 #endif // CHROMEOS_DBUS_SESSION_MANAGER_CLIENT_H_ 345 #endif // CHROMEOS_DBUS_SESSION_MANAGER_CLIENT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698