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

Unified Diff: chrome/browser/chromeos/login/existing_user_controller.h

Issue 12218078: Implement a policy to autologin a public account. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: split out FakeSessionManagerClient Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/login/existing_user_controller.h
diff --git a/chrome/browser/chromeos/login/existing_user_controller.h b/chrome/browser/chromeos/login/existing_user_controller.h
index 1de2597abf29d124001ea68b7bb7f569ccf86b05..e867977fc883f2f60e6004edf354e6cd83551d95 100644
--- a/chrome/browser/chromeos/login/existing_user_controller.h
+++ b/chrome/browser/chromeos/login/existing_user_controller.h
@@ -7,6 +7,7 @@
#include <string>
+#include "ash/wm/user_activity_observer.h"
#include "base/callback_forward.h"
#include "base/compiler_specific.h"
#include "base/gtest_prod_util.h"
@@ -40,7 +41,8 @@ class LoginDisplayHost;
class ExistingUserController : public LoginDisplay::Delegate,
public content::NotificationObserver,
public LoginPerformer::Delegate,
- public LoginUtils::Delegate {
+ public LoginUtils::Delegate,
+ public ash::UserActivityObserver {
public:
// All UI initialization is deferred till Init() call.
explicit ExistingUserController(LoginDisplayHost* host);
@@ -61,6 +63,15 @@ class ExistingUserController : public LoginDisplay::Delegate,
// Tells the controller to resume a pending login.
void ResumeLogin();
+ // Start the public session auto-login timer.
+ void StartPublicSessionAutoLoginTimer();
+
+ // Stop the public session auto-login timer when a login attempt begins.
+ void StopPublicSessionAutoLoginTimer();
+
+ // UserActivityObserver::Observer implementation.
bartfab (slow) 2013/02/25 16:51:23 The overrides should follow the order in which the
dconnelly 2013/02/26 18:04:15 Done.
+ virtual void OnUserActivity() OVERRIDE;
+
// LoginDisplay::Delegate: implementation
virtual void CancelPasswordChangedFlow() OVERRIDE;
virtual void CreateAccount() OVERRIDE;
@@ -75,6 +86,7 @@ class ExistingUserController : public LoginDisplay::Delegate,
virtual void LoginAsRetailModeUser() OVERRIDE;
virtual void LoginAsGuest() OVERRIDE;
virtual void LoginAsPublicAccount(const std::string& username) OVERRIDE;
+ virtual void OnSigninScreenReady() OVERRIDE;
virtual void OnUserSelected(const std::string& username) OVERRIDE;
virtual void OnStartEnterpriseEnrollment() OVERRIDE;
virtual void OnStartDeviceReset() OVERRIDE;
@@ -107,8 +119,16 @@ class ExistingUserController : public LoginDisplay::Delegate,
private:
friend class ExistingUserControllerTest;
+ friend class ExistingUserControllerAutoLoginUnitTests;
+ friend class ExistingUserControllerAutoLoginIntegrationTests;
friend class MockLoginPerformerDelegate;
+ // Retrieve public session auto-login policy and update the timer.
+ void ConfigurePublicSessionAutoLogin();
+
+ // Trigger public session auto-login.
+ void OnPublicSessionAutoLoginTimerFire();
+
// LoginPerformer::Delegate implementation:
virtual void OnLoginFailure(const LoginFailure& error) OVERRIDE;
virtual void OnLoginSuccess(
@@ -189,6 +209,15 @@ class ExistingUserController : public LoginDisplay::Delegate,
// Updates the |login_display_| attached to this controller.
void UpdateLoginDisplay(const UserList& users);
+ // Public session auto-login timer.
+ base::OneShotTimer<ExistingUserController> auto_login_timer_;
bartfab (slow) 2013/02/25 16:51:23 When I was adding the session length limiter, ther
dconnelly 2013/02/26 18:04:15 Done.
+
+ // Public session auto-login timeout, in milliseconds.
+ int public_session_auto_login_delay_;
+
+ // Username for public session auto-login.
+ std::string public_session_auto_login_username_;
+
// Used to execute login operations.
scoped_ptr<LoginPerformer> login_performer_;
@@ -249,6 +278,9 @@ class ExistingUserController : public LoginDisplay::Delegate,
// session.
bool do_auto_enrollment_;
+ // Whether the sign-in UI is finished loading.
+ bool signin_screen_ready_;
+
// The username used for auto-enrollment, if it was triggered.
std::string auto_enrollment_username_;
@@ -263,6 +295,10 @@ class ExistingUserController : public LoginDisplay::Delegate,
base::OneShotTimer<ExistingUserController> reboot_timer_;
FRIEND_TEST_ALL_PREFIXES(ExistingUserControllerTest, ExistingUserLogin);
+ FRIEND_TEST_ALL_PREFIXES(ExistingUserControllerPublicSessionTest,
bartfab (slow) 2013/02/25 16:51:23 Since you already added the base classes of your t
dconnelly 2013/02/26 18:04:15 I tried that, it doesn't work. From https://code.
bartfab (slow) 2013/02/28 10:21:33 Yes. You need to implement the accesses to the Exi
+ ConfigureAutoLogin);
+ FRIEND_TEST_ALL_PREFIXES(ExistingUserControllerPublicSessionTest,
+ OnAutoLoginFire);
DISALLOW_COPY_AND_ASSIGN(ExistingUserController);
};

Powered by Google App Engine
This is Rietveld 408576698