Index: chrome/browser/chromeos/policy/consumer_management_service.cc |
diff --git a/chrome/browser/chromeos/policy/consumer_management_service.cc b/chrome/browser/chromeos/policy/consumer_management_service.cc |
index 247bdaf58c735d2034cb02fab1818c628ed4e6fa..782dd39cddce5f95e88b0fe643c1cc6587a380a1 100644 |
--- a/chrome/browser/chromeos/policy/consumer_management_service.cc |
+++ b/chrome/browser/chromeos/policy/consumer_management_service.cc |
@@ -20,6 +20,7 @@ |
#include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.h" |
#include "chrome/browser/chromeos/policy/enrollment_status_chromeos.h" |
#include "chrome/browser/chromeos/profiles/profile_helper.h" |
+#include "chrome/browser/chromeos/settings/device_settings_service.h" |
#include "chrome/browser/notifications/notification.h" |
#include "chrome/browser/notifications/notification_ui_manager.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -67,9 +68,11 @@ const char* kConsumerManagementOverlay = "/consumer-management-overlay"; |
namespace policy { |
ConsumerManagementService::ConsumerManagementService( |
- chromeos::CryptohomeClient* client) |
+ chromeos::CryptohomeClient* client, |
+ chromeos::DeviceSettingsService* device_settings_service) |
: Consumer("consumer_management_service"), |
client_(client), |
+ device_settings_service_(device_settings_service), |
enrolling_token_service_(NULL), |
is_observing_token_service_(false), |
weak_ptr_factory_(this) { |
@@ -94,6 +97,14 @@ void ConsumerManagementService::RegisterPrefs(PrefRegistrySimple* registry) { |
prefs::kConsumerManagementEnrollmentState, ENROLLMENT_NONE); |
} |
+void ConsumerManagementService::AddObserver(Observer* observer) { |
+ observers_.AddObserver(observer); |
+} |
+ |
+void ConsumerManagementService::RemoveObserver(Observer* observer) { |
+ observers_.RemoveObserver(observer); |
+} |
+ |
ConsumerManagementService::ConsumerEnrollmentState |
ConsumerManagementService::GetEnrollmentState() const { |
const PrefService* prefs = g_browser_process->local_state(); |
@@ -109,6 +120,8 @@ void ConsumerManagementService::SetEnrollmentState( |
ConsumerEnrollmentState state) { |
PrefService* prefs = g_browser_process->local_state(); |
prefs->SetInteger(prefs::kConsumerManagementEnrollmentState, state); |
+ |
+ NotifyEnrollmentStateChanged(); |
bartfab (slow)
2014/08/20 14:40:02
Nit: Since this is the only caller of NotifyEnroll
davidyu
2014/08/21 09:40:29
Done.
|
} |
void ConsumerManagementService::GetOwner(const GetOwnerCallback& callback) { |
@@ -181,6 +194,23 @@ void ConsumerManagementService::OnFlushAndSignBootAttributesDone( |
callback.Run(true); |
} |
+bool ConsumerManagementService::IsEnrolled() const { |
+ const enterprise_management::PolicyData* policy_data = |
+ device_settings_service_->policy_data(); |
+ return policy_data && policy_data->management_mode() == |
bartfab (slow)
2014/08/20 14:40:02
What if policy data has not been retrieved yet? Th
davidyu
2014/08/21 09:40:29
Added a unknown state which is returned when polic
|
+ enterprise_management::PolicyData::CONSUMER_MANAGED; |
+} |
+ |
+bool ConsumerManagementService::IsEnrolling() const { |
+ ConsumerEnrollmentState state = GetEnrollmentState(); |
+ return state > ENROLLMENT_NONE && state < ENROLLMENT_SUCCESS; |
+} |
+ |
+bool ConsumerManagementService::IsUnenrolling() const { |
+ // TODO(davidyu): Implement this. |
bartfab (slow)
2014/08/20 14:40:02
Nit: Can you add a bug number?
davidyu
2014/08/21 09:40:29
Done.
|
+ return false; |
+} |
+ |
void ConsumerManagementService::Observe( |
int type, |
const content::NotificationSource& source, |
@@ -422,6 +452,12 @@ void ConsumerManagementService::ShowDesktopNotification( |
g_browser_process->notification_ui_manager()->Add(*notification, profile); |
} |
+void ConsumerManagementService::NotifyEnrollmentStateChanged() { |
+ FOR_EACH_OBSERVER(Observer, |
+ observers_, |
+ OnConsumerManagementEnrollmentStateChanged(this)); |
+} |
+ |
ConsumerManagementService::DesktopNotificationDelegate:: |
DesktopNotificationDelegate( |
const std::string& id, |