Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/policy/consumer_management_service.h" | 5 #include "chrome/browser/chromeos/policy/consumer_management_service.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "base/macros.h" | |
|
bartfab (slow)
2014/08/21 11:39:35
Nit: Already included by the header file.
davidyu
2014/08/22 05:14:13
Done.
| |
| 11 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" |
| 12 #include "base/prefs/pref_registry_simple.h" | 13 #include "base/prefs/pref_registry_simple.h" |
| 13 #include "base/prefs/pref_service.h" | 14 #include "base/prefs/pref_service.h" |
| 14 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
| 15 #include "base/time/time.h" | 16 #include "base/time/time.h" |
| 16 #include "chrome/browser/browser_process.h" | 17 #include "chrome/browser/browser_process.h" |
| 17 #include "chrome/browser/browser_process_platform_part.h" | 18 #include "chrome/browser/browser_process_platform_part.h" |
| 18 #include "chrome/browser/chrome_notification_types.h" | 19 #include "chrome/browser/chrome_notification_types.h" |
| 19 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" | 20 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| 20 #include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.h" | 21 #include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 54 | 55 |
| 55 namespace { | 56 namespace { |
| 56 | 57 |
| 57 // Boot atttributes ID. | 58 // Boot atttributes ID. |
| 58 const char kAttributeOwnerId[] = "consumer_management.owner_id"; | 59 const char kAttributeOwnerId[] = "consumer_management.owner_id"; |
| 59 | 60 |
| 60 // Desktop notification constants. | 61 // Desktop notification constants. |
| 61 const char kEnrollmentNotificationId[] = "consumer_management.enroll"; | 62 const char kEnrollmentNotificationId[] = "consumer_management.enroll"; |
| 62 const char kEnrollmentNotificationUrl[] = "chrome://consumer-management/enroll"; | 63 const char kEnrollmentNotificationUrl[] = "chrome://consumer-management/enroll"; |
| 63 | 64 |
| 64 // The relative path to the settings page URL for opening the consumer | 65 // The relative path to the settings page URL for opening the consumer |
|
bartfab (slow)
2014/08/21 11:39:35
How about:
The path to the consumer management en
davidyu
2014/08/22 05:14:12
Done.
| |
| 65 // management enrollment/unenrollment confirmation overlay. | 66 // management enrollment/unenrollment confirmation overlay. |
| 66 const char kConsumerManagementOverlay[] = "consumer-management-overlay"; | 67 const char kConsumerManagementOverlay[] = "consumer-management-overlay"; |
| 67 | 68 |
| 69 // The string of Status enum. | |
| 70 const char* kStatusString[] = { | |
| 71 "STATUS_UNKNOWN", | |
| 72 "STATUS_ENROLLED", | |
| 73 "STATUS_ENROLLING", | |
| 74 "STATUS_UNENROLLED", | |
| 75 "STATUS_UNENROLLING", | |
| 76 }; | |
| 77 | |
| 78 COMPILE_ASSERT( | |
| 79 arraysize(kStatusString) == policy::ConsumerManagementService::STATUS_LAST, | |
| 80 "invalid kStatusString array size."); | |
| 81 | |
| 68 } // namespace | 82 } // namespace |
| 69 | 83 |
| 84 namespace em = enterprise_management; | |
| 85 | |
| 70 namespace policy { | 86 namespace policy { |
| 71 | 87 |
| 72 ConsumerManagementService::ConsumerManagementService( | 88 ConsumerManagementService::ConsumerManagementService( |
| 73 chromeos::CryptohomeClient* client) | 89 chromeos::CryptohomeClient* client, |
| 90 chromeos::DeviceSettingsService* device_settings_service) | |
| 74 : Consumer("consumer_management_service"), | 91 : Consumer("consumer_management_service"), |
| 75 client_(client), | 92 client_(client), |
| 93 device_settings_service_(device_settings_service), | |
| 76 enrolling_profile_(NULL), | 94 enrolling_profile_(NULL), |
| 77 weak_ptr_factory_(this) { | 95 weak_ptr_factory_(this) { |
| 78 registrar_.Add(this, | 96 registrar_.Add(this, |
| 79 chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED, | 97 chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED, |
| 80 content::NotificationService::AllSources()); | 98 content::NotificationService::AllSources()); |
| 99 // A NULL value may be passed in the test. | |
|
bartfab (slow)
2014/08/21 11:39:35
Nit: s/the test/tests/
davidyu
2014/08/22 05:14:13
Done.
| |
| 100 if (device_settings_service_) | |
| 101 device_settings_service_->AddObserver(this); | |
| 81 } | 102 } |
| 82 | 103 |
| 83 ConsumerManagementService::~ConsumerManagementService() { | 104 ConsumerManagementService::~ConsumerManagementService() { |
| 84 registrar_.Remove(this, | |
| 85 chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED, | |
| 86 content::NotificationService::AllSources()); | |
| 87 if (enrolling_profile_) { | 105 if (enrolling_profile_) { |
| 88 ProfileOAuth2TokenServiceFactory::GetForProfile(enrolling_profile_)-> | 106 ProfileOAuth2TokenServiceFactory::GetForProfile(enrolling_profile_)-> |
| 89 RemoveObserver(this); | 107 RemoveObserver(this); |
| 90 } | 108 } |
| 109 if (device_settings_service_) | |
| 110 device_settings_service_->RemoveObserver(this); | |
| 111 registrar_.Remove(this, | |
| 112 chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED, | |
| 113 content::NotificationService::AllSources()); | |
| 91 } | 114 } |
| 92 | 115 |
| 93 // static | 116 // static |
| 94 void ConsumerManagementService::RegisterPrefs(PrefRegistrySimple* registry) { | 117 void ConsumerManagementService::RegisterPrefs(PrefRegistrySimple* registry) { |
| 95 registry->RegisterIntegerPref( | 118 registry->RegisterIntegerPref( |
| 96 prefs::kConsumerManagementEnrollmentState, ENROLLMENT_NONE); | 119 prefs::kConsumerManagementEnrollmentStage, ENROLLMENT_STAGE_NONE); |
| 97 } | 120 } |
| 98 | 121 |
| 99 ConsumerManagementService::ConsumerEnrollmentState | 122 void ConsumerManagementService::AddObserver(Observer* observer) { |
| 100 ConsumerManagementService::GetEnrollmentState() const { | 123 observers_.AddObserver(observer); |
| 101 const PrefService* prefs = g_browser_process->local_state(); | |
| 102 int state = prefs->GetInteger(prefs::kConsumerManagementEnrollmentState); | |
| 103 if (state < 0 || state >= ENROLLMENT_LAST) { | |
| 104 LOG(ERROR) << "Unknown enrollment state: " << state; | |
| 105 state = 0; | |
| 106 } | |
| 107 return static_cast<ConsumerEnrollmentState>(state); | |
| 108 } | 124 } |
| 109 | 125 |
| 110 void ConsumerManagementService::SetEnrollmentState( | 126 void ConsumerManagementService::RemoveObserver(Observer* observer) { |
| 111 ConsumerEnrollmentState state) { | 127 observers_.RemoveObserver(observer); |
| 128 } | |
| 129 | |
| 130 ConsumerManagementService::Status | |
| 131 ConsumerManagementService::GetStatus() const { | |
| 132 if (!device_settings_service_) | |
| 133 return STATUS_UNKNOWN; | |
| 134 | |
| 135 const enterprise_management::PolicyData* policy_data = | |
| 136 device_settings_service_->policy_data(); | |
| 137 if (!policy_data) | |
| 138 return STATUS_UNKNOWN; | |
| 139 | |
| 140 if (policy_data->management_mode() == em::PolicyData::CONSUMER_MANAGED) { | |
| 141 // TODO(davidyu): Check if unenrollment is in progress. | |
| 142 // http://crbug.com/353050. | |
| 143 return STATUS_ENROLLED; | |
| 144 } else { | |
|
bartfab (slow)
2014/08/21 11:39:35
Nit: The style guide forbids else after a return i
davidyu
2014/08/22 05:14:13
Done.
| |
| 145 EnrollmentStage stage = GetEnrollmentStage(); | |
| 146 if (stage > ENROLLMENT_STAGE_NONE && stage < ENROLLMENT_STAGE_SUCCESS) | |
| 147 return STATUS_ENROLLING; | |
| 148 else | |
|
bartfab (slow)
2014/08/21 11:39:35
Nit: The style guide forbids else after a return i
davidyu
2014/08/22 05:14:13
Done.
| |
| 149 return STATUS_UNENROLLED; | |
| 150 } | |
| 151 } | |
| 152 | |
| 153 // static | |
| 154 std::string ConsumerManagementService::GetStatusString(Status status) { | |
| 155 if (status < 0 || status >= STATUS_LAST) | |
| 156 status = STATUS_UNKNOWN; | |
| 157 return kStatusString[status]; | |
| 158 } | |
| 159 | |
| 160 ConsumerManagementService::EnrollmentStage | |
| 161 ConsumerManagementService::GetEnrollmentStage() const { | |
| 162 const PrefService* prefs = g_browser_process->local_state(); | |
| 163 int stage = prefs->GetInteger(prefs::kConsumerManagementEnrollmentStage); | |
| 164 if (stage < 0 || stage >= ENROLLMENT_STAGE_LAST) { | |
| 165 LOG(ERROR) << "Unknown enrollment stage: " << stage; | |
| 166 stage = 0; | |
| 167 } | |
| 168 return static_cast<EnrollmentStage>(stage); | |
| 169 } | |
| 170 | |
| 171 void ConsumerManagementService::SetEnrollmentStage(EnrollmentStage stage) { | |
| 112 PrefService* prefs = g_browser_process->local_state(); | 172 PrefService* prefs = g_browser_process->local_state(); |
| 113 prefs->SetInteger(prefs::kConsumerManagementEnrollmentState, state); | 173 prefs->SetInteger(prefs::kConsumerManagementEnrollmentStage, stage); |
| 174 | |
| 175 NotifyStatusChanged(); | |
| 114 } | 176 } |
| 115 | 177 |
| 116 void ConsumerManagementService::GetOwner(const GetOwnerCallback& callback) { | 178 void ConsumerManagementService::GetOwner(const GetOwnerCallback& callback) { |
| 117 cryptohome::GetBootAttributeRequest request; | 179 cryptohome::GetBootAttributeRequest request; |
| 118 request.set_name(kAttributeOwnerId); | 180 request.set_name(kAttributeOwnerId); |
| 119 client_->GetBootAttribute( | 181 client_->GetBootAttribute( |
| 120 request, | 182 request, |
| 121 base::Bind(&ConsumerManagementService::OnGetBootAttributeDone, | 183 base::Bind(&ConsumerManagementService::OnGetBootAttributeDone, |
| 122 weak_ptr_factory_.GetWeakPtr(), | 184 weak_ptr_factory_.GetWeakPtr(), |
| 123 callback)); | 185 callback)); |
| 124 } | 186 } |
| 125 | 187 |
| 126 void ConsumerManagementService::SetOwner(const std::string& user_id, | 188 void ConsumerManagementService::SetOwner(const std::string& user_id, |
| 127 const SetOwnerCallback& callback) { | 189 const SetOwnerCallback& callback) { |
| 128 cryptohome::SetBootAttributeRequest request; | 190 cryptohome::SetBootAttributeRequest request; |
| 129 request.set_name(kAttributeOwnerId); | 191 request.set_name(kAttributeOwnerId); |
| 130 request.set_value(user_id.data(), user_id.size()); | 192 request.set_value(user_id.data(), user_id.size()); |
| 131 client_->SetBootAttribute( | 193 client_->SetBootAttribute( |
| 132 request, | 194 request, |
| 133 base::Bind(&ConsumerManagementService::OnSetBootAttributeDone, | 195 base::Bind(&ConsumerManagementService::OnSetBootAttributeDone, |
| 134 weak_ptr_factory_.GetWeakPtr(), | 196 weak_ptr_factory_.GetWeakPtr(), |
| 135 callback)); | 197 callback)); |
| 136 } | 198 } |
| 137 | 199 |
| 200 void ConsumerManagementService::OwnershipStatusChanged() { | |
| 201 } | |
| 202 | |
| 203 void ConsumerManagementService::DeviceSettingsUpdated() { | |
| 204 NotifyStatusChanged(); | |
| 205 } | |
| 206 | |
| 138 void ConsumerManagementService::Observe( | 207 void ConsumerManagementService::Observe( |
| 139 int type, | 208 int type, |
| 140 const content::NotificationSource& source, | 209 const content::NotificationSource& source, |
| 141 const content::NotificationDetails& details) { | 210 const content::NotificationDetails& details) { |
| 142 if (type != chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED) { | 211 if (type != chrome::NOTIFICATION_LOGIN_USER_PROFILE_PREPARED) { |
| 143 NOTREACHED() << "Unexpected notification " << type; | 212 NOTREACHED() << "Unexpected notification " << type; |
| 144 return; | 213 return; |
| 145 } | 214 } |
| 146 | 215 |
| 147 Profile* profile = content::Details<Profile>(details).ptr(); | 216 Profile* profile = content::Details<Profile>(details).ptr(); |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 170 OnOwnerAccessTokenAvailable(access_token); | 239 OnOwnerAccessTokenAvailable(access_token); |
| 171 } | 240 } |
| 172 | 241 |
| 173 void ConsumerManagementService::OnGetTokenFailure( | 242 void ConsumerManagementService::OnGetTokenFailure( |
| 174 const OAuth2TokenService::Request* request, | 243 const OAuth2TokenService::Request* request, |
| 175 const GoogleServiceAuthError& error) { | 244 const GoogleServiceAuthError& error) { |
| 176 DCHECK_EQ(token_request_, request); | 245 DCHECK_EQ(token_request_, request); |
| 177 base::MessageLoop::current()->DeleteSoon(FROM_HERE, token_request_.release()); | 246 base::MessageLoop::current()->DeleteSoon(FROM_HERE, token_request_.release()); |
| 178 | 247 |
| 179 LOG(ERROR) << "Failed to get the access token: " << error.ToString(); | 248 LOG(ERROR) << "Failed to get the access token: " << error.ToString(); |
| 180 EndEnrollment(ENROLLMENT_GET_TOKEN_FAILED); | 249 EndEnrollment(ENROLLMENT_STAGE_GET_TOKEN_FAILED); |
| 181 } | 250 } |
| 182 | 251 |
| 183 ConsumerManagementService::DesktopNotificationDelegate:: | 252 ConsumerManagementService::DesktopNotificationDelegate:: |
| 184 DesktopNotificationDelegate( | 253 DesktopNotificationDelegate( |
| 185 const std::string& id, | 254 const std::string& id, |
| 186 const base::Closure& button_click_callback) | 255 const base::Closure& button_click_callback) |
| 187 : id_(id), | 256 : id_(id), |
| 188 button_click_callback_(button_click_callback) { | 257 button_click_callback_(button_click_callback) { |
| 189 } | 258 } |
| 190 | 259 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 261 if (!dbus_success || reply.error() != 0) { | 330 if (!dbus_success || reply.error() != 0) { |
| 262 LOG(ERROR) << "Failed to flush and sign boot lockbox."; | 331 LOG(ERROR) << "Failed to flush and sign boot lockbox."; |
| 263 callback.Run(false); | 332 callback.Run(false); |
| 264 return; | 333 return; |
| 265 } | 334 } |
| 266 | 335 |
| 267 callback.Run(true); | 336 callback.Run(true); |
| 268 } | 337 } |
| 269 | 338 |
| 270 void ConsumerManagementService::OnOwnerSignin(Profile* profile) { | 339 void ConsumerManagementService::OnOwnerSignin(Profile* profile) { |
| 271 const ConsumerEnrollmentState state = GetEnrollmentState(); | 340 const EnrollmentStage stage = GetEnrollmentStage(); |
| 272 switch (state) { | 341 switch (stage) { |
| 273 case ENROLLMENT_NONE: | 342 case ENROLLMENT_STAGE_NONE: |
| 274 // Do nothing. | 343 // Do nothing. |
| 275 return; | 344 return; |
| 276 | 345 |
| 277 case ENROLLMENT_OWNER_STORED: | 346 case ENROLLMENT_STAGE_OWNER_STORED: |
| 278 // Continue the enrollment process after the owner signs in. | 347 // Continue the enrollment process after the owner signs in. |
| 279 ContinueEnrollmentProcess(profile); | 348 ContinueEnrollmentProcess(profile); |
| 280 return; | 349 return; |
| 281 | 350 |
| 282 case ENROLLMENT_SUCCESS: | 351 case ENROLLMENT_STAGE_SUCCESS: |
| 283 case ENROLLMENT_CANCELED: | 352 case ENROLLMENT_STAGE_CANCELED: |
| 284 case ENROLLMENT_BOOT_LOCKBOX_FAILED: | 353 case ENROLLMENT_STAGE_BOOT_LOCKBOX_FAILED: |
| 285 case ENROLLMENT_DM_SERVER_FAILED: | 354 case ENROLLMENT_STAGE_DM_SERVER_FAILED: |
| 286 case ENROLLMENT_GET_TOKEN_FAILED: | 355 case ENROLLMENT_STAGE_GET_TOKEN_FAILED: |
| 287 ShowDesktopNotificationAndResetState(state, profile); | 356 ShowDesktopNotificationAndResetStage(stage, profile); |
| 288 return; | 357 return; |
| 289 | 358 |
| 290 case ENROLLMENT_REQUESTED: | 359 case ENROLLMENT_STAGE_REQUESTED: |
| 291 case ENROLLMENT_LAST: | 360 case ENROLLMENT_STAGE_LAST: |
| 292 NOTREACHED() << "Unexpected enrollment state " << state; | 361 NOTREACHED() << "Unexpected enrollment stage " << stage; |
| 293 return; | 362 return; |
| 294 } | 363 } |
| 295 } | 364 } |
| 296 | 365 |
| 297 void ConsumerManagementService::ContinueEnrollmentProcess(Profile* profile) { | 366 void ConsumerManagementService::ContinueEnrollmentProcess(Profile* profile) { |
| 298 enrolling_profile_ = profile; | 367 enrolling_profile_ = profile; |
| 299 | 368 |
| 300 // First, we need to ensure that the refresh token is available. | 369 // First, we need to ensure that the refresh token is available. |
| 301 const std::string account_id = GetAccountIdFromProfile(profile); | 370 const std::string account_id = GetAccountIdFromProfile(profile); |
| 302 ProfileOAuth2TokenService* token_service = | 371 ProfileOAuth2TokenService* token_service = |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 344 } | 413 } |
| 345 | 414 |
| 346 void ConsumerManagementService::OnEnrollmentCompleted(EnrollmentStatus status) { | 415 void ConsumerManagementService::OnEnrollmentCompleted(EnrollmentStatus status) { |
| 347 if (status.status() != EnrollmentStatus::STATUS_SUCCESS) { | 416 if (status.status() != EnrollmentStatus::STATUS_SUCCESS) { |
| 348 LOG(ERROR) << "Failed to enroll the device." | 417 LOG(ERROR) << "Failed to enroll the device." |
| 349 << " status=" << status.status() | 418 << " status=" << status.status() |
| 350 << " client_status=" << status.client_status() | 419 << " client_status=" << status.client_status() |
| 351 << " http_status=" << status.http_status() | 420 << " http_status=" << status.http_status() |
| 352 << " store_status=" << status.store_status() | 421 << " store_status=" << status.store_status() |
| 353 << " validation_status=" << status.validation_status(); | 422 << " validation_status=" << status.validation_status(); |
| 354 EndEnrollment(ENROLLMENT_DM_SERVER_FAILED); | 423 EndEnrollment(ENROLLMENT_STAGE_DM_SERVER_FAILED); |
| 355 return; | 424 return; |
| 356 } | 425 } |
| 357 | 426 |
| 358 EndEnrollment(ENROLLMENT_SUCCESS); | 427 EndEnrollment(ENROLLMENT_STAGE_SUCCESS); |
| 359 } | 428 } |
| 360 | 429 |
| 361 void ConsumerManagementService::EndEnrollment(ConsumerEnrollmentState state) { | 430 void ConsumerManagementService::EndEnrollment(EnrollmentStage stage) { |
| 362 Profile* profile = enrolling_profile_; | 431 Profile* profile = enrolling_profile_; |
| 363 enrolling_profile_ = NULL; | 432 enrolling_profile_ = NULL; |
| 364 | 433 |
| 365 SetEnrollmentState(state); | 434 SetEnrollmentStage(stage); |
| 366 if (user_manager::UserManager::Get()->IsCurrentUserOwner()) | 435 if (user_manager::UserManager::Get()->IsCurrentUserOwner()) |
| 367 ShowDesktopNotificationAndResetState(state, profile); | 436 ShowDesktopNotificationAndResetStage(stage, profile); |
| 368 } | 437 } |
| 369 | 438 |
| 370 void ConsumerManagementService::ShowDesktopNotificationAndResetState( | 439 void ConsumerManagementService::ShowDesktopNotificationAndResetStage( |
| 371 ConsumerEnrollmentState state, Profile* profile) { | 440 EnrollmentStage stage, Profile* profile) { |
| 372 base::string16 title; | 441 base::string16 title; |
| 373 base::string16 body; | 442 base::string16 body; |
| 374 base::string16 button_label; | 443 base::string16 button_label; |
| 375 base::Closure button_click_callback; | 444 base::Closure button_click_callback; |
| 376 | 445 |
| 377 if (state == ENROLLMENT_SUCCESS) { | 446 if (stage == ENROLLMENT_STAGE_SUCCESS) { |
| 378 title = l10n_util::GetStringUTF16( | 447 title = l10n_util::GetStringUTF16( |
| 379 IDS_CONSUMER_MANAGEMENT_ENROLLMENT_NOTIFICATION_TITLE); | 448 IDS_CONSUMER_MANAGEMENT_ENROLLMENT_NOTIFICATION_TITLE); |
| 380 body = l10n_util::GetStringUTF16( | 449 body = l10n_util::GetStringUTF16( |
| 381 IDS_CONSUMER_MANAGEMENT_ENROLLMENT_NOTIFICATION_BODY); | 450 IDS_CONSUMER_MANAGEMENT_ENROLLMENT_NOTIFICATION_BODY); |
| 382 button_label = l10n_util::GetStringUTF16( | 451 button_label = l10n_util::GetStringUTF16( |
| 383 IDS_CONSUMER_MANAGEMENT_NOTIFICATION_MODIFY_SETTINGS_BUTTON); | 452 IDS_CONSUMER_MANAGEMENT_NOTIFICATION_MODIFY_SETTINGS_BUTTON); |
| 384 button_click_callback = base::Bind( | 453 button_click_callback = base::Bind( |
| 385 &ConsumerManagementService::OpenSettingsPage, | 454 &ConsumerManagementService::OpenSettingsPage, |
| 386 weak_ptr_factory_.GetWeakPtr(), | 455 weak_ptr_factory_.GetWeakPtr(), |
| 387 profile); | 456 profile); |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 411 message_center::NotifierId(message_center::NotifierId::SYSTEM_COMPONENT, | 480 message_center::NotifierId(message_center::NotifierId::SYSTEM_COMPONENT, |
| 412 kEnrollmentNotificationId), | 481 kEnrollmentNotificationId), |
| 413 base::string16(), // display_source | 482 base::string16(), // display_source |
| 414 base::UTF8ToUTF16(kEnrollmentNotificationId), | 483 base::UTF8ToUTF16(kEnrollmentNotificationId), |
| 415 optional_field, | 484 optional_field, |
| 416 new DesktopNotificationDelegate(kEnrollmentNotificationId, | 485 new DesktopNotificationDelegate(kEnrollmentNotificationId, |
| 417 button_click_callback)); | 486 button_click_callback)); |
| 418 notification.SetSystemPriority(); | 487 notification.SetSystemPriority(); |
| 419 g_browser_process->notification_ui_manager()->Add(notification, profile); | 488 g_browser_process->notification_ui_manager()->Add(notification, profile); |
| 420 | 489 |
| 421 SetEnrollmentState(ENROLLMENT_NONE); | 490 SetEnrollmentStage(ENROLLMENT_STAGE_NONE); |
| 422 } | 491 } |
| 423 | 492 |
| 424 void ConsumerManagementService::OpenSettingsPage(Profile* profile) const { | 493 void ConsumerManagementService::OpenSettingsPage(Profile* profile) const { |
| 425 const GURL url(chrome::kChromeUISettingsURL); | 494 const GURL url(chrome::kChromeUISettingsURL); |
| 426 chrome::NavigateParams params(profile, url, content::PAGE_TRANSITION_LINK); | 495 chrome::NavigateParams params(profile, url, content::PAGE_TRANSITION_LINK); |
| 427 params.disposition = NEW_FOREGROUND_TAB; | 496 params.disposition = NEW_FOREGROUND_TAB; |
| 428 chrome::Navigate(¶ms); | 497 chrome::Navigate(¶ms); |
| 429 } | 498 } |
| 430 | 499 |
| 431 void ConsumerManagementService::TryEnrollmentAgain(Profile* profile) const { | 500 void ConsumerManagementService::TryEnrollmentAgain(Profile* profile) const { |
| 432 GURL base_url(chrome::kChromeUISettingsURL); | 501 GURL base_url(chrome::kChromeUISettingsURL); |
| 433 GURL url = base_url.Resolve(kConsumerManagementOverlay); | 502 GURL url = base_url.Resolve(kConsumerManagementOverlay); |
| 434 | 503 |
| 435 chrome::NavigateParams params(profile, url, content::PAGE_TRANSITION_LINK); | 504 chrome::NavigateParams params(profile, url, content::PAGE_TRANSITION_LINK); |
| 436 params.disposition = NEW_FOREGROUND_TAB; | 505 params.disposition = NEW_FOREGROUND_TAB; |
| 437 chrome::Navigate(¶ms); | 506 chrome::Navigate(¶ms); |
| 438 } | 507 } |
| 439 | 508 |
| 440 const std::string& ConsumerManagementService::GetAccountIdFromProfile( | 509 const std::string& ConsumerManagementService::GetAccountIdFromProfile( |
| 441 Profile* profile) const { | 510 Profile* profile) const { |
| 442 return SigninManagerFactory::GetForProfile(profile)-> | 511 return SigninManagerFactory::GetForProfile(profile)-> |
| 443 GetAuthenticatedAccountId(); | 512 GetAuthenticatedAccountId(); |
| 444 } | 513 } |
| 445 | 514 |
| 515 void ConsumerManagementService::NotifyStatusChanged() { | |
| 516 Status status = GetStatus(); | |
| 517 | |
| 518 FOR_EACH_OBSERVER(Observer, | |
| 519 observers_, | |
| 520 OnConsumerManagementStatusChanged(status)); | |
| 521 } | |
| 522 | |
| 446 } // namespace policy | 523 } // namespace policy |
| OLD | NEW |