X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchrome%2Fbrowser%2Fui%2Fwebui%2Foptions%2Fmanaged_user_import_handler.cc;h=e72152ac1da5b642146bf3eb2b47a6155e1390f8;hb=ff3e2503a20db9193d323c1d19c38c68004dec4a;hp=f86f6b9b76e4487c38bccf15df53d8ab36b5d291;hpb=7338fba38ba696536d1cc9d389afd716a6ab2fe6;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chrome/browser/ui/webui/options/managed_user_import_handler.cc b/src/chrome/browser/ui/webui/options/managed_user_import_handler.cc index f86f6b9..e72152a 100644 --- a/src/chrome/browser/ui/webui/options/managed_user_import_handler.cc +++ b/src/chrome/browser/ui/webui/options/managed_user_import_handler.cc @@ -11,6 +11,9 @@ #include "base/values.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/chrome_notification_types.h" +#include "chrome/browser/managed_mode/managed_user_constants.h" +#include "chrome/browser/managed_mode/managed_user_shared_settings_service.h" +#include "chrome/browser/managed_mode/managed_user_shared_settings_service_factory.h" #include "chrome/browser/managed_mode/managed_user_sync_service.h" #include "chrome/browser/managed_mode/managed_user_sync_service_factory.h" #include "chrome/browser/profiles/profile.h" @@ -45,10 +48,18 @@ scoped_ptr GetAvatarIcons() { namespace options { ManagedUserImportHandler::ManagedUserImportHandler() - : weak_ptr_factory_(this) { -} + : weak_ptr_factory_(this) {} -ManagedUserImportHandler::~ManagedUserImportHandler() {} +ManagedUserImportHandler::~ManagedUserImportHandler() { + Profile* profile = Profile::FromWebUI(web_ui()); + if (!profile->IsManaged()) { + ManagedUserSyncService* service = + ManagedUserSyncServiceFactory::GetForProfile(profile); + if (service) + service->RemoveObserver(this); + subscription_.reset(); + } +} void ManagedUserImportHandler::GetLocalizedValues( base::DictionaryValue* localized_strings) { @@ -73,8 +84,25 @@ void ManagedUserImportHandler::GetLocalizedValues( } void ManagedUserImportHandler::InitializeHandler() { + Profile* profile = Profile::FromWebUI(web_ui()); registrar_.Add(this, chrome::NOTIFICATION_GLOBAL_ERRORS_CHANGED, - content::Source(Profile::FromWebUI(web_ui()))); + content::Source(profile)); + if (!profile->IsManaged()) { + ManagedUserSyncService* sync_service = + ManagedUserSyncServiceFactory::GetForProfile(profile); + if (sync_service) { + sync_service->AddObserver(this); + ManagedUserSharedSettingsService* settings_service = + ManagedUserSharedSettingsServiceFactory::GetForBrowserContext( + profile); + subscription_ = settings_service->Subscribe( + base::Bind(&ManagedUserImportHandler::OnSharedSettingChanged, + weak_ptr_factory_.GetWeakPtr())); + } else { + DCHECK(!ManagedUserSharedSettingsServiceFactory::GetForBrowserContext( + profile)); + } + } } void ManagedUserImportHandler::RegisterMessages() { @@ -90,14 +118,18 @@ void ManagedUserImportHandler::Observe( if (type == chrome::NOTIFICATION_GLOBAL_ERRORS_CHANGED) { SigninGlobalError* error = SigninGlobalError::GetForProfile(Profile::FromWebUI(web_ui())); - if (content::Details(details).ptr() != error) - return; - - RequestManagedUserImportUpdate(NULL); - return; + if (content::Details(details).ptr() == error) + FetchManagedUsers(); } +} + +void ManagedUserImportHandler::OnManagedUsersChanged() { + FetchManagedUsers(); +} - OptionsPageUIHandler::Observe(type, source, details); +void ManagedUserImportHandler::FetchManagedUsers() { + web_ui()->CallJavascriptFunction("options.ManagedUserListData.resetPromise"); + RequestManagedUserImportUpdate(NULL); } void ManagedUserImportHandler::RequestManagedUserImportUpdate( @@ -131,21 +163,32 @@ void ManagedUserImportHandler::SendExistingManagedUsers( } base::ListValue managed_users; + Profile* profile = Profile::FromWebUI(web_ui()); + ManagedUserSharedSettingsService* service = + ManagedUserSharedSettingsServiceFactory::GetForBrowserContext(profile); for (base::DictionaryValue::Iterator it(*dict); !it.IsAtEnd(); it.Advance()) { const base::DictionaryValue* value = NULL; bool success = it.value().GetAsDictionary(&value); DCHECK(success); std::string name; value->GetString(ManagedUserSyncService::kName, &name); - std::string avatar_str; - value->GetString(ManagedUserSyncService::kChromeAvatar, &avatar_str); base::DictionaryValue* managed_user = new base::DictionaryValue; managed_user->SetString("id", it.key()); managed_user->SetString("name", name); int avatar_index = ManagedUserSyncService::kNoAvatar; - success = ManagedUserSyncService::GetAvatarIndex(avatar_str, &avatar_index); + const base::Value* avatar_index_value = + service->GetValue(it.key(), managed_users::kChromeAvatarIndex); + if (avatar_index_value) { + success = avatar_index_value->GetAsInteger(&avatar_index); + } else { + // Check if there is a legacy avatar index stored. + std::string avatar_str; + value->GetString(ManagedUserSyncService::kChromeAvatar, &avatar_str); + success = + ManagedUserSyncService::GetAvatarIndex(avatar_str, &avatar_index); + } DCHECK(success); managed_user->SetBoolean("needAvatar", avatar_index == ManagedUserSyncService::kNoAvatar); @@ -194,4 +237,11 @@ bool ManagedUserImportHandler::HasAuthError() const { state == GoogleServiceAuthError::ACCOUNT_DISABLED; } +void ManagedUserImportHandler::OnSharedSettingChanged( + const std::string& managed_user_id, + const std::string& key) { + if (key == managed_users::kChromeAvatarIndex) + FetchManagedUsers(); +} + } // namespace options