Index: chrome/browser/chromeos/login/login_performer.cc |
diff --git a/chrome/browser/chromeos/login/login_performer.cc b/chrome/browser/chromeos/login/login_performer.cc |
index 161684d1d3d2aabd05418575125f039a9c2dceab..d2dd4a19b1d4e981e576c41f4a8e42195d5a5455 100644 |
--- a/chrome/browser/chromeos/login/login_performer.cc |
+++ b/chrome/browser/chromeos/login/login_performer.cc |
@@ -6,6 +6,7 @@ |
#include <string> |
+#include "base/bind.h" |
#include "base/command_line.h" |
#include "base/logging.h" |
#include "base/message_loop.h" |
@@ -14,11 +15,11 @@ |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chromeos/boot_times_loader.h" |
#include "chrome/browser/chromeos/cros/cros_library.h" |
+#include "chrome/browser/chromeos/cros_settings.h" |
Denis Lagno
2011/09/20 14:05:22
nit: / precedes _ in ASCII order.
pastarmovj
2011/09/20 17:11:52
Done.
|
#include "chrome/browser/chromeos/cros/screen_lock_library.h" |
#include "chrome/browser/chromeos/cros_settings_names.h" |
#include "chrome/browser/chromeos/login/login_utils.h" |
#include "chrome/browser/chromeos/login/screen_locker.h" |
-#include "chrome/browser/chromeos/user_cros_settings_provider.h" |
#include "chrome/browser/prefs/pref_service.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/profiles/profile_manager.h" |
@@ -226,26 +227,6 @@ void LoginPerformer::OnPasswordChangeDetected( |
} |
//////////////////////////////////////////////////////////////////////////////// |
-// LoginPerformer, SignedSettingsHelper::Callback implementation: |
- |
-void LoginPerformer::OnCheckWhitelistCompleted(SignedSettings::ReturnCode code, |
- const std::string& email) { |
- if (code == SignedSettings::SUCCESS) { |
- // Whitelist check passed, continue with authentication. |
- if (auth_mode_ == AUTH_MODE_EXTENSION) { |
- StartLoginCompletion(); |
- } else { |
- StartAuthentication(); |
- } |
- } else { |
- if (delegate_) |
- delegate_->WhiteListCheckFailed(email); |
- else |
- NOTREACHED(); |
- } |
-} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
// LoginPerformer, NotificationObserver implementation: |
// |
@@ -273,44 +254,44 @@ void LoginPerformer::CompleteLogin(const std::string& username, |
auth_mode_ = AUTH_MODE_EXTENSION; |
username_ = username; |
password_ = password; |
+ |
+ CrosSettings* cros_settings = CrosSettings::Get(); |
+ |
// Whitelist check is always performed during initial login and |
// should not be performed when ScreenLock is active (pending online auth). |
if (!ScreenLocker::default_screen_locker()) { |
- // Must not proceed without signature verification. |
- UserCrosSettingsProvider user_settings; |
- bool trusted_setting_available = user_settings.RequestTrustedAllowNewUser( |
- method_factory_.NewRunnableMethod(&LoginPerformer::CompleteLogin, |
- username, |
- password)); |
- if (!trusted_setting_available) { |
+ // Must not proceed without signature verification or valid user list. |
+ bool trusted_settings_available = |
+ cros_settings->GetTrusted( |
+ kAccountsPrefAllowNewUser, |
+ base::Bind(&LoginPerformer::CompleteLogin, base::Unretained(this), |
pastarmovj
2011/09/20 17:11:52
Fixed those too.
|
+ username, password)) || |
+ cros_settings->GetTrusted( |
+ kAccountsPrefAllowNewUser, |
+ base::Bind(&LoginPerformer::CompleteLogin, base::Unretained(this), |
+ username, password)); |
+ if (!trusted_settings_available) { |
// Value of AllowNewUser setting is still not verified. |
// Another attempt will be invoked after verification completion. |
return; |
} |
} |
- if (ScreenLocker::default_screen_locker() || |
- UserCrosSettingsProvider::cached_allow_new_user()) { |
+ bool allow_new_user = false; |
+ cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user); |
+ if (ScreenLocker::default_screen_locker() || allow_new_user) { |
// Starts authentication if guest login is allowed or online auth pending. |
StartLoginCompletion(); |
} else { |
- // Otherwise, do whitelist check first. |
- PrefService* local_state = g_browser_process->local_state(); |
- CHECK(local_state); |
- if (local_state->IsManagedPreference(kAccountsPrefUsers)) { |
- if (UserCrosSettingsProvider::IsEmailInCachedWhitelist(username)) { |
- StartLoginCompletion(); |
- } else { |
- if (delegate_) |
- delegate_->WhiteListCheckFailed(username); |
- else |
- NOTREACHED(); |
- } |
+ const ListValue *user_list; |
+ if (cros_settings->GetList(kAccountsPrefUsers, &user_list) && |
+ user_list->Find(StringValue(username)) != user_list->end()) { |
+ StartLoginCompletion(); |
} else { |
- // In case of signed settings: with current implementation we do not |
- // trust whitelist returned by PrefService. So make separate check. |
- SignedSettingsHelper::Get()->StartCheckWhitelistOp( |
- username, this); |
+ if (delegate_) |
+ delegate_->WhiteListCheckFailed(username); |
+ else |
+ NOTREACHED(); |
} |
} |
} |
@@ -321,44 +302,43 @@ void LoginPerformer::Login(const std::string& username, |
username_ = username; |
password_ = password; |
+ CrosSettings* cros_settings = CrosSettings::Get(); |
+ |
// Whitelist check is always performed during initial login and |
// should not be performed when ScreenLock is active (pending online auth). |
if (!ScreenLocker::default_screen_locker()) { |
// Must not proceed without signature verification. |
- UserCrosSettingsProvider user_settings; |
- bool trusted_setting_available = user_settings.RequestTrustedAllowNewUser( |
- method_factory_.NewRunnableMethod(&LoginPerformer::Login, |
- username, |
- password)); |
- if (!trusted_setting_available) { |
+ bool trusted_settings_available = |
+ cros_settings->GetTrusted( |
+ kAccountsPrefAllowNewUser, |
+ base::Bind(&LoginPerformer::CompleteLogin, base::Unretained(this), |
+ username, password)) || |
+ cros_settings->GetTrusted( |
+ kAccountsPrefAllowNewUser, |
+ base::Bind(&LoginPerformer::CompleteLogin, base::Unretained(this), |
+ username, password)); |
+ if (!trusted_settings_available) { |
// Value of AllowNewUser setting is still not verified. |
// Another attempt will be invoked after verification completion. |
return; |
} |
} |
- if (ScreenLocker::default_screen_locker() || |
- UserCrosSettingsProvider::cached_allow_new_user()) { |
+ bool allow_new_user = false; |
+ cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user); |
+ if (ScreenLocker::default_screen_locker() || allow_new_user) { |
// Starts authentication if guest login is allowed or online auth pending. |
StartAuthentication(); |
} else { |
- // Otherwise, do whitelist check first. |
- PrefService* local_state = g_browser_process->local_state(); |
- CHECK(local_state); |
- if (local_state->IsManagedPreference(kAccountsPrefUsers)) { |
- if (UserCrosSettingsProvider::IsEmailInCachedWhitelist(username)) { |
- StartAuthentication(); |
- } else { |
- if (delegate_) |
- delegate_->WhiteListCheckFailed(username); |
- else |
- NOTREACHED(); |
- } |
+ const ListValue *user_list; |
+ if (cros_settings->GetList(kAccountsPrefUsers, &user_list) && |
+ user_list->Find(StringValue(username)) != user_list->end()) { |
+ StartAuthentication(); |
} else { |
- // In case of signed settings: with current implementation we do not |
- // trust whitelist returned by PrefService. So make separate check. |
- SignedSettingsHelper::Get()->StartCheckWhitelistOp( |
- username, this); |
+ if (delegate_) |
+ delegate_->WhiteListCheckFailed(username); |
+ else |
+ NOTREACHED(); |
} |
} |
} |