summaryrefslogtreecommitdiffstats
path: root/chromeos/login
diff options
context:
space:
mode:
authormukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-30 05:07:24 +0000
committermukai@chromium.org <mukai@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-30 05:07:24 +0000
commit35dafd7f1aa1733d6ccb15f02327c075577f6302 (patch)
tree975915d14d7c8bb592721307bb234eb666b8c1dc /chromeos/login
parentf3bb0e00bf1e3c9f4c605a6b4711ab5d5e5313d6 (diff)
downloadchromium_src-35dafd7f1aa1733d6ccb15f02327c075577f6302.zip
chromium_src-35dafd7f1aa1733d6ccb15f02327c075577f6302.tar.gz
chromium_src-35dafd7f1aa1733d6ccb15f02327c075577f6302.tar.bz2
Uses a flag for always-logged-in status of login_state instead of command-line
BUG=None R=nkostylev@chromium.org, stevenjb@chromium.org TEST=no breaks Review URL: https://codereview.chromium.org/37553004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@231759 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos/login')
-rw-r--r--chromeos/login/login_state.cc9
-rw-r--r--chromeos/login/login_state.h9
-rw-r--r--chromeos/login/login_state_unittest.cc2
3 files changed, 15 insertions, 5 deletions
diff --git a/chromeos/login/login_state.cc b/chromeos/login/login_state.cc
index a1f1fbb..db26d15 100644
--- a/chromeos/login/login_state.cc
+++ b/chromeos/login/login_state.cc
@@ -16,7 +16,7 @@ namespace {
// When running a Chrome OS build outside of a device (i.e. on a developer's
// workstation) and not running as login-manager, pretend like we're always
// logged in.
-bool AlwaysLoggedIn() {
+bool AlwaysLoggedInByDefault() {
return !base::SysInfo::IsRunningOnChromeOS() &&
!CommandLine::ForCurrentProcess()->HasSwitch(switches::kLoginManager);
}
@@ -72,13 +72,13 @@ LoginState::LoggedInUserType LoginState::GetLoggedInUserType() const {
}
bool LoginState::IsUserLoggedIn() const {
- if (AlwaysLoggedIn())
+ if (always_logged_in_)
return true;
return logged_in_state_ == LOGGED_IN_ACTIVE;
}
bool LoginState::IsInSafeMode() const {
- DCHECK(!AlwaysLoggedIn() || logged_in_state_ != LOGGED_IN_SAFE_MODE);
+ DCHECK(!always_logged_in_ || logged_in_state_ != LOGGED_IN_SAFE_MODE);
return logged_in_state_ == LOGGED_IN_SAFE_MODE;
}
@@ -117,7 +117,8 @@ bool LoginState::IsUserGaiaAuthenticated() const {
// Private methods
LoginState::LoginState() : logged_in_state_(LOGGED_IN_OOBE),
- logged_in_user_type_(LOGGED_IN_USER_NONE) {
+ logged_in_user_type_(LOGGED_IN_USER_NONE),
+ always_logged_in_(AlwaysLoggedInByDefault()) {
}
LoginState::~LoginState() {
diff --git a/chromeos/login/login_state.h b/chromeos/login/login_state.h
index 0ef18a7..9fd03d7 100644
--- a/chromeos/login/login_state.h
+++ b/chromeos/login/login_state.h
@@ -74,6 +74,10 @@ class CHROMEOS_EXPORT LoginState {
// (i.e., non public nor locally managed account).
bool IsUserGaiaAuthenticated() const;
+ void set_always_logged_in(bool always_logged_in) {
+ always_logged_in_ = always_logged_in;
+ }
+
private:
LoginState();
virtual ~LoginState();
@@ -84,6 +88,11 @@ class CHROMEOS_EXPORT LoginState {
LoggedInUserType logged_in_user_type_;
ObserverList<Observer> observer_list_;
+ // If true, it always thinks the current status as logged in. Set to true by
+ // default running on a Linux desktop without flags and test cases. To test
+ // behaviors with a specific login state, call set_always_logged_in(false).
+ bool always_logged_in_;
+
DISALLOW_COPY_AND_ASSIGN(LoginState);
};
diff --git a/chromeos/login/login_state_unittest.cc b/chromeos/login/login_state_unittest.cc
index 4054007..431b419 100644
--- a/chromeos/login/login_state_unittest.cc
+++ b/chromeos/login/login_state_unittest.cc
@@ -22,8 +22,8 @@ class LoginStateTest : public testing::Test,
// testing::Test
virtual void SetUp() OVERRIDE {
- CommandLine::ForCurrentProcess()->AppendSwitch(switches::kLoginManager);
LoginState::Initialize();
+ LoginState::Get()->set_always_logged_in(false);
LoginState::Get()->AddObserver(this);
}