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_CHROMEOS_CROS_LOGIN_LIBRARY_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_CROS_LOGIN_LIBRARY_H_ |
6 #define CHROME_BROWSER_CHROMEOS_CROS_LOGIN_LIBRARY_H_ | 6 #define CHROME_BROWSER_CHROMEOS_CROS_LOGIN_LIBRARY_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/singleton.h" | 10 #include "base/singleton.h" |
11 #include "third_party/cros/chromeos_login.h" | 11 #include "third_party/cros/chromeos_login.h" |
12 | 12 |
13 namespace chromeos { | 13 namespace chromeos { |
14 | 14 |
15 // This class handles the interaction with the ChromeOS login library APIs. | 15 // This interface defines the interaction with the ChromeOS login library APIs. |
16 // Users can get an instance of this library class like this: | |
17 // LoginLibrary::Get() | |
18 class LoginLibrary { | 16 class LoginLibrary { |
19 public: | 17 public: |
20 // If the libray fails to load the first time we check, we don't want to | 18 virtual ~LoginLibrary() {} |
21 // keep trying to load the library. If it fails the first time, it fails. | |
22 static bool tried_and_failed; | |
23 | |
24 // This gets the singleton LoginLibrary. | |
25 static LoginLibrary* Get(); | |
26 | |
27 // Requests that the Upstart signal login-prompt-ready be emitted. | 19 // Requests that the Upstart signal login-prompt-ready be emitted. |
28 bool EmitLoginPromptReady(); | 20 virtual bool EmitLoginPromptReady() = 0; |
29 | 21 |
30 // Tells the session manager to start a logged-in session for the user | 22 // Tells the session manager to start a logged-in session for the user |
31 // |user_email|. |unique_id| is meant to be used when we have a non-human- | 23 // |user_email|. |unique_id| is meant to be used when we have a non-human- |
32 // readable unique identifier by which we distinguish users (to deal with | 24 // readable unique identifier by which we distinguish users (to deal with |
33 // potential email address changes over time). | 25 // potential email address changes over time). |
34 bool StartSession(const std::string& user_email, | 26 virtual bool StartSession(const std::string& user_email, |
35 const std::string& unique_id /* unused */); | 27 const std::string& unique_id /* unused */) = 0; |
36 | 28 |
37 // Tells the session manager to terminate the current logged-in session. | 29 // Tells the session manager to terminate the current logged-in session. |
38 // In the event that we ever support multiple simultaneous user sessions, | 30 // In the event that we ever support multiple simultaneous user sessions, |
39 // This will tell the session manager to terminate the session for the user | 31 // This will tell the session manager to terminate the session for the user |
40 // indicated by |unique_id|. | 32 // indicated by |unique_id|. |
41 bool StopSession(const std::string& unique_id /* unused */); | 33 virtual bool StopSession(const std::string& unique_id /* unused */) = 0; |
| 34 }; |
| 35 |
| 36 // This class handles the interaction with the ChromeOS login library APIs. |
| 37 class LoginLibraryImpl : public LoginLibrary { |
| 38 public: |
| 39 LoginLibraryImpl() {} |
| 40 virtual ~LoginLibraryImpl() {} |
| 41 |
| 42 // LoginLibrary overrides. |
| 43 virtual bool EmitLoginPromptReady(); |
| 44 virtual bool StartSession(const std::string& user_email, |
| 45 const std::string& unique_id /* unused */); |
| 46 virtual bool StopSession(const std::string& unique_id /* unused */); |
42 | 47 |
43 private: | 48 private: |
44 friend struct DefaultSingletonTraits<LoginLibrary>; | 49 DISALLOW_COPY_AND_ASSIGN(LoginLibraryImpl); |
45 | |
46 LoginLibrary() {} | |
47 ~LoginLibrary() {} | |
48 | |
49 DISALLOW_COPY_AND_ASSIGN(LoginLibrary); | |
50 }; | 50 }; |
51 | 51 |
52 } // namespace chromeos | 52 } // namespace chromeos |
53 | 53 |
54 #endif // CHROME_BROWSER_CHROMEOS_CROS_LOGIN_LIBRARY_H_ | 54 #endif // CHROME_BROWSER_CHROMEOS_CROS_LOGIN_LIBRARY_H_ |
OLD | NEW |