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

Unified Diff: chrome/browser/managed_mode/managed_user_service.cc

Issue 316813002: Start managed_mode refactor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: remove DCHECKs Created 6 years, 6 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/managed_mode/managed_user_service.cc
diff --git a/chrome/browser/managed_mode/managed_user_service.cc b/chrome/browser/managed_mode/managed_user_service.cc
index 4ce920deb79114f2480617062ac5dbadb4eca103..8175ebf1f5128a7b73341bdd3524b68614f258f8 100644
--- a/chrome/browser/managed_mode/managed_user_service.cc
+++ b/chrome/browser/managed_mode/managed_user_service.cc
@@ -56,6 +56,11 @@
#include "chrome/browser/chromeos/login/users/user_manager.h"
#endif
+#if defined(ENABLE_THEMES)
+#include "chrome/browser/themes/theme_service.h"
+#include "chrome/browser/themes/theme_service_factory.h"
+#endif
+
using base::DictionaryValue;
using base::UserMetricsAction;
using content::BrowserThread;
@@ -125,6 +130,8 @@ void ManagedUserService::URLFilterContext::SetManualURLs(
ManagedUserService::ManagedUserService(Profile* profile)
: profile_(profile),
+ active_(false),
+ delegate_(NULL),
extension_registry_observer_(this),
waiting_for_sync_initialization_(false),
is_profile_active_(false),
@@ -142,19 +149,8 @@ void ManagedUserService::Shutdown() {
did_shutdown_ = true;
if (ProfileIsManaged()) {
content::RecordAction(UserMetricsAction("ManagedUsers_QuitBrowser"));
-#if !defined(OS_ANDROID)
- // TODO(bauerb): Get rid of the platform-specific #ifdef here.
- // http://crbug.com/313377
- BrowserList::RemoveObserver(this);
-#endif
}
-
- if (!waiting_for_sync_initialization_)
- return;
-
- ProfileSyncService* sync_service =
- ProfileSyncServiceFactory::GetForProfile(profile_);
- sync_service->RemoveObserver(this);
+ SetActive(false);
}
bool ManagedUserService::ProfileIsManaged() const {
@@ -201,6 +197,15 @@ void ManagedUserService::MigrateUserPrefs(PrefService* prefs) {
prefs->SetString(prefs::kManagedUserId, "Dummy ID");
}
+void ManagedUserService::SetDelegate(Delegate* delegate) {
+ if (delegate_ == delegate)
+ return;
+ // If the delegate changed, deactivate first to give the old delegate a chance
+ // to clean up.
+ SetActive(false);
+ delegate_ = delegate;
+}
+
scoped_refptr<const ManagedModeURLFilter>
ManagedUserService::GetURLFilterForIOThread() {
return url_filter_context_.io_url_filter();
@@ -409,6 +414,12 @@ ManagedUserSettingsService* ManagedUserService::GetSettingsService() {
return ManagedUserSettingsServiceFactory::GetForProfile(profile_);
}
+void ManagedUserService::OnManagedUserIdChanged() {
+ std::string managed_user_id =
+ profile_->GetPrefs()->GetString(prefs::kManagedUserId);
+ SetActive(!managed_user_id.empty());
+}
+
void ManagedUserService::OnDefaultFilteringBehaviorChanged() {
DCHECK(ProfileIsManaged());
@@ -513,73 +524,124 @@ void ManagedUserService::InitSync(const std::string& refresh_token) {
}
void ManagedUserService::Init() {
- ManagedUserSettingsService* settings_service = GetSettingsService();
- DCHECK(settings_service->IsReady());
- if (!ProfileIsManaged()) {
- settings_service->Clear();
- return;
- }
+ DCHECK(GetSettingsService()->IsReady());
- settings_service->Activate();
+ pref_change_registrar_.Init(profile_->GetPrefs());
+ pref_change_registrar_.Add(
+ prefs::kManagedUserId,
+ base::Bind(&ManagedUserService::OnManagedUserIdChanged,
+ base::Unretained(this)));
- SupervisedUserPrefMappingServiceFactory::GetForBrowserContext(profile_)
- ->Init();
+ SetActive(ProfileIsManaged());
+}
- CommandLine* command_line = CommandLine::ForCurrentProcess();
- if (command_line->HasSwitch(switches::kManagedUserSyncToken)) {
- InitSync(
- command_line->GetSwitchValueASCII(switches::kManagedUserSyncToken));
+void ManagedUserService::SetActive(bool active) {
+ if (active_ == active)
+ return;
+ active_ = active;
+
+ if (!delegate_ || !delegate_->SetActive(active_)) {
+ if (active_) {
+ SupervisedUserPrefMappingServiceFactory::GetForBrowserContext(profile_)
+ ->Init();
+
+ CommandLine* command_line = CommandLine::ForCurrentProcess();
+ if (command_line->HasSwitch(switches::kManagedUserSyncToken)) {
+ InitSync(
+ command_line->GetSwitchValueASCII(switches::kManagedUserSyncToken));
+ }
+
+ ProfileOAuth2TokenService* token_service =
+ ProfileOAuth2TokenServiceFactory::GetForProfile(profile_);
+ token_service->LoadCredentials(managed_users::kManagedUserPseudoEmail);
+ }
}
- ProfileOAuth2TokenService* token_service =
- ProfileOAuth2TokenServiceFactory::GetForProfile(profile_);
- token_service->LoadCredentials(managed_users::kManagedUserPseudoEmail);
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kPermissionRequestApiUrl)) {
- permissions_creator_ =
- PermissionRequestCreatorApiary::CreateWithProfile(profile_);
- } else {
- PrefService* pref_service = profile_->GetPrefs();
- permissions_creator_.reset(new PermissionRequestCreatorSync(
- settings_service,
- ManagedUserSharedSettingsServiceFactory::GetForBrowserContext(profile_),
- pref_service->GetString(prefs::kProfileName),
- pref_service->GetString(prefs::kManagedUserId)));
+ // Now activate/deactivate anything not handled by the delegate yet.
+
+#if defined(ENABLE_THEMES)
+ // Re-set the default theme to turn the SU theme on/off.
+ ThemeService* theme_service = ThemeServiceFactory::GetForProfile(profile_);
+ if (theme_service->UsingDefaultTheme() || theme_service->UsingSystemTheme()) {
+ ThemeServiceFactory::GetForProfile(profile_)->UseDefaultTheme();
}
+#endif
+
+ ManagedUserSettingsService* settings_service = GetSettingsService();
+ settings_service->SetActive(active_);
extensions::ExtensionSystem* extension_system =
extensions::ExtensionSystem::Get(profile_);
extensions::ManagementPolicy* management_policy =
extension_system->management_policy();
- if (management_policy)
- extension_system->management_policy()->RegisterProvider(this);
- extension_registry_observer_.Add(
- extensions::ExtensionRegistry::Get(profile_));
+ if (active_) {
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kPermissionRequestApiUrl)) {
+ permissions_creator_ =
+ PermissionRequestCreatorApiary::CreateWithProfile(profile_);
+ } else {
+ PrefService* pref_service = profile_->GetPrefs();
+ permissions_creator_.reset(new PermissionRequestCreatorSync(
+ settings_service,
+ ManagedUserSharedSettingsServiceFactory::GetForBrowserContext(
+ profile_),
+ pref_service->GetString(prefs::kProfileName),
+ pref_service->GetString(prefs::kManagedUserId)));
+ }
- pref_change_registrar_.Init(profile_->GetPrefs());
- pref_change_registrar_.Add(
- prefs::kDefaultManagedModeFilteringBehavior,
- base::Bind(&ManagedUserService::OnDefaultFilteringBehaviorChanged,
- base::Unretained(this)));
- pref_change_registrar_.Add(prefs::kManagedModeManualHosts,
- base::Bind(&ManagedUserService::UpdateManualHosts,
- base::Unretained(this)));
- pref_change_registrar_.Add(prefs::kManagedModeManualURLs,
- base::Bind(&ManagedUserService::UpdateManualURLs,
- base::Unretained(this)));
+ if (management_policy)
+ management_policy->RegisterProvider(this);
+
+ extension_registry_observer_.Add(
+ extensions::ExtensionRegistry::Get(profile_));
+
+ pref_change_registrar_.Add(
+ prefs::kDefaultManagedModeFilteringBehavior,
+ base::Bind(&ManagedUserService::OnDefaultFilteringBehaviorChanged,
+ base::Unretained(this)));
+ pref_change_registrar_.Add(prefs::kManagedModeManualHosts,
+ base::Bind(&ManagedUserService::UpdateManualHosts,
+ base::Unretained(this)));
+ pref_change_registrar_.Add(prefs::kManagedModeManualURLs,
+ base::Bind(&ManagedUserService::UpdateManualURLs,
+ base::Unretained(this)));
+
+ // Initialize the filter.
+ OnDefaultFilteringBehaviorChanged();
+ UpdateSiteLists();
+ UpdateManualHosts();
+ UpdateManualURLs();
#if !defined(OS_ANDROID)
- // TODO(bauerb): Get rid of the platform-specific #ifdef here.
- // http://crbug.com/313377
- BrowserList::AddObserver(this);
+ // TODO(bauerb): Get rid of the platform-specific #ifdef here.
+ // http://crbug.com/313377
+ BrowserList::AddObserver(this);
#endif
+ } else {
+ permissions_creator_.reset();
+
+ if (management_policy)
+ management_policy->UnregisterProvider(this);
+
+ extension_registry_observer_.RemoveAll();
+
+ pref_change_registrar_.Remove(prefs::kDefaultManagedModeFilteringBehavior);
+ pref_change_registrar_.Remove(prefs::kManagedModeManualHosts);
+ pref_change_registrar_.Remove(prefs::kManagedModeManualURLs);
+
+ if (waiting_for_sync_initialization_) {
+ ProfileSyncService* sync_service =
+ ProfileSyncServiceFactory::GetForProfile(profile_);
+ sync_service->RemoveObserver(this);
+ }
- // Initialize the filter.
- OnDefaultFilteringBehaviorChanged();
- UpdateSiteLists();
- UpdateManualHosts();
- UpdateManualURLs();
+#if !defined(OS_ANDROID)
+ // TODO(bauerb): Get rid of the platform-specific #ifdef here.
+ // http://crbug.com/313377
+ BrowserList::RemoveObserver(this);
+#endif
+ }
}
void ManagedUserService::RegisterAndInitSync(
« no previous file with comments | « chrome/browser/managed_mode/managed_user_service.h ('k') | chrome/browser/managed_mode/managed_user_settings_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698