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

Unified Diff: chrome/browser/chromeos/login/user_manager_impl.cc

Issue 11499012: Add policy for limiting the session length (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix include order. Created 8 years 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/user_manager_impl.cc
diff --git a/chrome/browser/chromeos/login/user_manager_impl.cc b/chrome/browser/chromeos/login/user_manager_impl.cc
index f34484a599b16c285a83f2f161efdce1b5058f72..1d6d7a0a3256712dbfc6404fc134db2f239d46bd 100644
--- a/chrome/browser/chromeos/login/user_manager_impl.cc
+++ b/chrome/browser/chromeos/login/user_manager_impl.cc
@@ -27,6 +27,7 @@
#include "chrome/browser/chromeos/login/remove_user_delegate.h"
#include "chrome/browser/chromeos/login/user_image_manager_impl.h"
#include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/browser/chromeos/power/session_length_limiter.h"
#include "chrome/browser/policy/browser_policy_connector.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/prefs/scoped_user_pref_update.h"
@@ -157,6 +158,7 @@ void UserManager::RegisterPrefs(PrefService* local_state) {
PrefService::UNSYNCABLE_PREF);
local_state->RegisterDictionaryPref(kUserDisplayEmail,
PrefService::UNSYNCABLE_PREF);
+ SessionLengthLimiter::RegisterPrefs(local_state);
}
UserManagerImpl::UserManagerImpl()
@@ -194,6 +196,8 @@ void UserManagerImpl::Shutdown() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
cros_settings_->RemoveSettingsObserver(kAccountsPrefDeviceLocalAccounts,
this);
+ // Stop the session length limiter.
+ session_length_limiter_.reset();
}
UserImageManager* UserManagerImpl::GetUserImageManager() {
@@ -229,6 +233,10 @@ void UserManagerImpl::UserLoggedIn(const std::string& email,
} else {
RegularUserLoggedIn(email, browser_restart);
}
+
+ // Start the session length limiter.
+ session_length_limiter_.reset(new SessionLengthLimiter(NULL,
+ browser_restart));
}
NotifyOnLogin();
@@ -582,6 +590,13 @@ bool UserManagerImpl::IsSessionStarted() const {
return session_started_;
}
+bool UserManagerImpl::HasBrowserRestarted() const {
+ CommandLine* command_line = CommandLine::ForCurrentProcess();
+ return base::chromeos::IsRunningOnChromeOS() &&
+ command_line->HasSwitch(switches::kLoginUser) &&
+ !command_line->HasSwitch(switches::kLoginPassword);
+}
+
bool UserManagerImpl::IsUserNonCryptohomeDataEphemeral(
const std::string& email) const {
// Data belonging to the guest, retail mode and stub users is always
@@ -614,10 +629,7 @@ bool UserManagerImpl::IsUserNonCryptohomeDataEphemeral(
// enabled.
// - or -
// b) The browser is restarting after a crash.
- return AreEphemeralUsersEnabled() ||
- (base::chromeos::IsRunningOnChromeOS() &&
- !CommandLine::ForCurrentProcess()->
- HasSwitch(switches::kLoginManager));
+ return AreEphemeralUsersEnabled() || HasBrowserRestarted();
}
void UserManagerImpl::AddObserver(UserManager::Observer* obs) {

Powered by Google App Engine
This is Rietveld 408576698