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

Unified Diff: chrome/browser/chromeos/settings/device_settings_service.cc

Issue 270663002: Implemented profile-aware owner key loading. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed DeviceOAuth2TokenServiceTest.* unit_tests. Created 6 years, 7 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/settings/device_settings_service.cc
diff --git a/chrome/browser/chromeos/settings/device_settings_service.cc b/chrome/browser/chromeos/settings/device_settings_service.cc
index 0895080c4f5b53dc585217054962ec7d632475bd..7249fde67fa8cddef90239db200e8bfb42ca3122 100644
--- a/chrome/browser/chromeos/settings/device_settings_service.cc
+++ b/chrome/browser/chromeos/settings/device_settings_service.cc
@@ -10,6 +10,9 @@
#include "base/stl_util.h"
#include "base/time/time.h"
#include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/chrome_notification_types.h"
+#include "chrome/browser/chromeos/login/user.h"
+#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h"
#include "chrome/browser/chromeos/settings/owner_key_util.h"
#include "chrome/browser/chromeos/settings/session_manager_operation.h"
@@ -82,6 +85,9 @@ DeviceSettingsService::DeviceSettingsService()
waiting_for_tpm_token_ = !TPMTokenLoader::Get()->IsTPMTokenReady();
TPMTokenLoader::Get()->AddObserver(this);
}
+ registrar_.Add(this,
+ chrome::NOTIFICATION_PROFILE_ADDED,
+ content::NotificationService::AllSources());
}
DeviceSettingsService::~DeviceSettingsService() {
@@ -279,6 +285,24 @@ void DeviceSettingsService::OnTPMTokenReady() {
EnsureReload(true);
}
+void DeviceSettingsService::Observe(
+ int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) {
+ if (type != chrome::NOTIFICATION_PROFILE_ADDED) {
+ NOTREACHED();
+ return;
+ }
+ Profile* profile = content::Source<Profile>(source).ptr();
Mattias Nissler (ping if slow) 2014/05/12 08:26:43 chrome/browser/chromeos/settings deliberately does
ygorshenin1 2014/05/12 08:35:43 You mean to directly pass NSS slot instead of user
Mattias Nissler (ping if slow) 2014/05/12 08:40:31 Yes, my idea was indeed to pass the NSS slot refer
ygorshenin1 2014/05/12 08:56:54 SignAndStore() is implicitly called from DeviceSet
ygorshenin1 2014/05/13 09:46:13 All User/Profile-related things are extracted into
+ if (!profile || !UserManager::IsInitialized())
+ return;
+ const User* user = UserManager::Get()->GetUserByProfile(profile);
+ if (user && user->email() == username_ && user->is_logged_in()) {
+ owner_key_ = NULL;
+ EnsureReload(true);
+ }
+}
+
void DeviceSettingsService::Enqueue(SessionManagerOperation* operation) {
pending_operations_.push_back(operation);
if (pending_operations_.front() == operation)
@@ -292,14 +316,17 @@ void DeviceSettingsService::EnqueueLoad(bool force_key_load) {
weak_factory_.GetWeakPtr(),
base::Closure()));
operation->set_force_key_load(force_key_load);
+ operation->set_username(username_);
Enqueue(operation);
}
void DeviceSettingsService::EnsureReload(bool force_key_load) {
- if (!pending_operations_.empty())
+ if (!pending_operations_.empty()) {
+ pending_operations_.front()->set_username(username_);
pending_operations_.front()->RestartLoad(force_key_load);
- else
+ } else {
EnqueueLoad(force_key_load);
+ }
}
void DeviceSettingsService::StartNextOperation() {

Powered by Google App Engine
This is Rietveld 408576698