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

Side by Side Diff: chrome/browser/ui/webui/options2/browser_options_handler2.cc

Issue 10139019: [webui settings] send user profiles info earlier during load (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: make return type scoped_ptr Created 8 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/ui/webui/options2/browser_options_handler2.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/ui/webui/options2/browser_options_handler2.h" 5 #include "chrome/browser/ui/webui/options2/browser_options_handler2.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after
357 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME))); 357 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
358 358
359 #if defined(OS_CHROMEOS) 359 #if defined(OS_CHROMEOS)
360 if (chromeos::UserManager::Get()->IsUserLoggedIn()) { 360 if (chromeos::UserManager::Get()->IsUserLoggedIn()) {
361 values->SetString("username", 361 values->SetString("username",
362 chromeos::UserManager::Get()->GetLoggedInUser().email()); 362 chromeos::UserManager::Get()->GetLoggedInUser().email());
363 } 363 }
364 #endif 364 #endif
365 365
366 // Pass along sync status early so it will be available during page init. 366 // Pass along sync status early so it will be available during page init.
367 values->Set("syncData", GetSyncStateDictionary()); 367 values->Set("syncData", GetSyncStateDictionary().release());
368 368
369 values->SetString("privacyLearnMoreURL", chrome::kPrivacyLearnMoreURL); 369 values->SetString("privacyLearnMoreURL", chrome::kPrivacyLearnMoreURL);
370 370
371 values->SetString( 371 values->SetString(
372 "languageSectionLabel", 372 "languageSectionLabel",
373 l10n_util::GetStringFUTF16( 373 l10n_util::GetStringFUTF16(
374 IDS_OPTIONS_ADVANCED_LANGUAGE_LABEL, 374 IDS_OPTIONS_ADVANCED_LANGUAGE_LABEL,
375 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME))); 375 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME)));
376 376
377 #if defined(OS_CHROMEOS) 377 #if defined(OS_CHROMEOS)
378 values->SetString("cloudPrintLearnMoreURL", chrome::kCloudPrintLearnMoreURL); 378 values->SetString("cloudPrintLearnMoreURL", chrome::kCloudPrintLearnMoreURL);
379 379
380 // TODO(pastarmovj): replace this with a call to the CrosSettings list 380 // TODO(pastarmovj): replace this with a call to the CrosSettings list
381 // handling functionality to come. 381 // handling functionality to come.
382 values->Set("timezoneList", 382 values->Set("timezoneList",
383 static_cast<chromeos::options2::SystemSettingsProvider*>( 383 static_cast<chromeos::options2::SystemSettingsProvider*>(
384 chromeos::CrosSettings::Get()->GetProvider( 384 chromeos::CrosSettings::Get()->GetProvider(
385 chromeos::kSystemTimezone))->GetTimezoneList()); 385 chromeos::kSystemTimezone))->GetTimezoneList());
386 #endif 386 #endif
387 #if defined(OS_MACOSX) 387 #if defined(OS_MACOSX)
388 values->SetString("macPasswordsWarning", 388 values->SetString("macPasswordsWarning",
389 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MAC_WARNING)); 389 l10n_util::GetStringUTF16(IDS_OPTIONS_PASSWORDS_MAC_WARNING));
390 values->SetBoolean("multiple_profiles", 390 values->SetBoolean("multiple_profiles",
391 g_browser_process->profile_manager()->GetNumberOfProfiles() > 1); 391 g_browser_process->profile_manager()->GetNumberOfProfiles() > 1);
392 #endif 392 #endif
393
394 if (multiprofile_)
395 values->Set("profilesInfo", GetProfilesInfoList().release());
393 } 396 }
394 397
395 void BrowserOptionsHandler::RegisterCloudPrintValues(DictionaryValue* values) { 398 void BrowserOptionsHandler::RegisterCloudPrintValues(DictionaryValue* values) {
396 #if defined(OS_CHROMEOS) 399 #if defined(OS_CHROMEOS)
397 values->SetString("cloudPrintChromeosOptionLabel", 400 values->SetString("cloudPrintChromeosOptionLabel",
398 l10n_util::GetStringFUTF16( 401 l10n_util::GetStringFUTF16(
399 IDS_CLOUD_PRINT_CHROMEOS_OPTION_LABEL, 402 IDS_CLOUD_PRINT_CHROMEOS_OPTION_LABEL,
400 l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT))); 403 l10n_util::GetStringUTF16(IDS_GOOGLE_CLOUD_PRINT)));
401 values->SetString("cloudPrintChromeosOptionButton", 404 values->SetString("cloudPrintChromeosOptionButton",
402 l10n_util::GetStringFUTF16( 405 l10n_util::GetStringFUTF16(
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 base::Bind(&BrowserOptionsHandler::ScreenMagnifierChangeCallback, 526 base::Bind(&BrowserOptionsHandler::ScreenMagnifierChangeCallback,
524 base::Unretained(this))); 527 base::Unretained(this)));
525 web_ui()->RegisterMessageCallback( 528 web_ui()->RegisterMessageCallback(
526 "virtualKeyboardChange", 529 "virtualKeyboardChange",
527 base::Bind(&BrowserOptionsHandler::VirtualKeyboardChangeCallback, 530 base::Bind(&BrowserOptionsHandler::VirtualKeyboardChangeCallback,
528 base::Unretained(this))); 531 base::Unretained(this)));
529 #endif 532 #endif
530 } 533 }
531 534
532 void BrowserOptionsHandler::OnStateChanged() { 535 void BrowserOptionsHandler::OnStateChanged() {
533 scoped_ptr<DictionaryValue> value(GetSyncStateDictionary()); 536 web_ui()->CallJavascriptFunction("BrowserOptions.updateSyncState",
534 web_ui()->CallJavascriptFunction("BrowserOptions.updateSyncState", *value); 537 *GetSyncStateDictionary());
535 538
536 SendProfilesInfo(); 539 SendProfilesInfo();
537 } 540 }
538 541
539 void BrowserOptionsHandler::InitializeHandler() { 542 void BrowserOptionsHandler::InitializeHandler() {
540 Profile* profile = Profile::FromWebUI(web_ui()); 543 Profile* profile = Profile::FromWebUI(web_ui());
541 PrefService* prefs = profile->GetPrefs(); 544 PrefService* prefs = profile->GetPrefs();
542 545
543 ProfileSyncService* sync_service( 546 ProfileSyncService* sync_service(
544 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile)); 547 ProfileSyncServiceFactory::GetInstance()->GetForProfile(profile));
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 #if !defined(OS_CHROMEOS) 605 #if !defined(OS_CHROMEOS)
603 proxy_prefs_.reset( 606 proxy_prefs_.reset(
604 PrefSetObserver::CreateProxyPrefSetObserver(prefs, this)); 607 PrefSetObserver::CreateProxyPrefSetObserver(prefs, this));
605 #endif // !defined(OS_CHROMEOS) 608 #endif // !defined(OS_CHROMEOS)
606 } 609 }
607 610
608 void BrowserOptionsHandler::InitializePage() { 611 void BrowserOptionsHandler::InitializePage() {
609 OnTemplateURLServiceChanged(); 612 OnTemplateURLServiceChanged();
610 ObserveThemeChanged(); 613 ObserveThemeChanged();
611 614
612 if (multiprofile_)
613 SendProfilesInfo();
614
615 SetupMetricsReportingCheckbox(); 615 SetupMetricsReportingCheckbox();
616 SetupMetricsReportingSettingVisibility(); 616 SetupMetricsReportingSettingVisibility();
617 SetupFontSizeSelector(); 617 SetupFontSizeSelector();
618 SetupPageZoomSelector(); 618 SetupPageZoomSelector();
619 SetupAutoOpenFileTypes(); 619 SetupAutoOpenFileTypes();
620 SetupProxySettingsSection(); 620 SetupProxySettingsSection();
621 SetupSSLConfigSettings(); 621 SetupSSLConfigSettings();
622 #if !defined(OS_CHROMEOS) 622 #if !defined(OS_CHROMEOS)
623 if (cloud_print_connector_ui_enabled_) { 623 if (cloud_print_connector_ui_enabled_) {
624 SetupCloudPrintConnectorSection(); 624 SetupCloudPrintConnectorSection();
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 896
897 void BrowserOptionsHandler::GetInstantFieldTrialStatus(const ListValue* args) { 897 void BrowserOptionsHandler::GetInstantFieldTrialStatus(const ListValue* args) {
898 Profile* profile = Profile::FromWebUI(web_ui()); 898 Profile* profile = Profile::FromWebUI(web_ui());
899 base::FundamentalValue enabled( 899 base::FundamentalValue enabled(
900 InstantFieldTrial::IsInstantExperiment(profile) && 900 InstantFieldTrial::IsInstantExperiment(profile) &&
901 !InstantFieldTrial::IsHiddenExperiment(profile)); 901 !InstantFieldTrial::IsHiddenExperiment(profile));
902 web_ui()->CallJavascriptFunction("BrowserOptions.setInstantFieldTrialStatus", 902 web_ui()->CallJavascriptFunction("BrowserOptions.setInstantFieldTrialStatus",
903 enabled); 903 enabled);
904 } 904 }
905 905
906 void BrowserOptionsHandler::SendProfilesInfo() { 906 scoped_ptr<ListValue> BrowserOptionsHandler::GetProfilesInfoList() {
907 // Set profile creation text and button if multi-profiles switch is on.
908 scoped_ptr<Value> visible(Value::CreateBooleanValue(multiprofile_));
909 web_ui()->CallJavascriptFunction("BrowserOptions.setProfilesSectionVisible",
910 *visible);
911
912 if (!multiprofile_)
913 return;
914
915 ProfileInfoCache& cache = 907 ProfileInfoCache& cache =
916 g_browser_process->profile_manager()->GetProfileInfoCache(); 908 g_browser_process->profile_manager()->GetProfileInfoCache();
917 ListValue profile_info_list; 909 scoped_ptr<ListValue> profile_info_list(new ListValue);
918 FilePath current_profile_path = 910 FilePath current_profile_path =
919 web_ui()->GetWebContents()->GetBrowserContext()->GetPath(); 911 web_ui()->GetWebContents()->GetBrowserContext()->GetPath();
912
920 for (size_t i = 0, e = cache.GetNumberOfProfiles(); i < e; ++i) { 913 for (size_t i = 0, e = cache.GetNumberOfProfiles(); i < e; ++i) {
921 DictionaryValue* profile_value = new DictionaryValue(); 914 DictionaryValue* profile_value = new DictionaryValue();
922 FilePath profile_path = cache.GetPathOfProfileAtIndex(i); 915 FilePath profile_path = cache.GetPathOfProfileAtIndex(i);
923 profile_value->SetString("name", cache.GetNameOfProfileAtIndex(i)); 916 profile_value->SetString("name", cache.GetNameOfProfileAtIndex(i));
924 profile_value->Set("filePath", base::CreateFilePathValue(profile_path)); 917 profile_value->Set("filePath", base::CreateFilePathValue(profile_path));
925 profile_value->SetBoolean("isCurrentProfile", 918 profile_value->SetBoolean("isCurrentProfile",
926 profile_path == current_profile_path); 919 profile_path == current_profile_path);
927 920
928 bool is_gaia_picture = 921 bool is_gaia_picture =
929 cache.IsUsingGAIAPictureOfProfileAtIndex(i) && 922 cache.IsUsingGAIAPictureOfProfileAtIndex(i) &&
930 cache.GetGAIAPictureOfProfileAtIndex(i); 923 cache.GetGAIAPictureOfProfileAtIndex(i);
931 if (is_gaia_picture) { 924 if (is_gaia_picture) {
932 gfx::Image icon = profiles::GetAvatarIconForWebUI( 925 gfx::Image icon = profiles::GetAvatarIconForWebUI(
933 cache.GetAvatarIconOfProfileAtIndex(i), true); 926 cache.GetAvatarIconOfProfileAtIndex(i), true);
934 profile_value->SetString("iconURL", 927 profile_value->SetString("iconURL",
935 web_ui_util::GetImageDataUrl(*icon.ToSkBitmap())); 928 web_ui_util::GetImageDataUrl(*icon.ToSkBitmap()));
936 } else { 929 } else {
937 size_t icon_index = cache.GetAvatarIconIndexOfProfileAtIndex(i); 930 size_t icon_index = cache.GetAvatarIconIndexOfProfileAtIndex(i);
938 profile_value->SetString("iconURL", 931 profile_value->SetString("iconURL",
939 cache.GetDefaultAvatarIconUrl(icon_index)); 932 cache.GetDefaultAvatarIconUrl(icon_index));
940 } 933 }
941 934
942 profile_info_list.Append(profile_value); 935 profile_info_list->Append(profile_value);
943 } 936 }
944 937
938 return profile_info_list.Pass();
939 }
940
941 void BrowserOptionsHandler::SendProfilesInfo() {
945 web_ui()->CallJavascriptFunction("BrowserOptions.setProfilesInfo", 942 web_ui()->CallJavascriptFunction("BrowserOptions.setProfilesInfo",
946 profile_info_list); 943 *GetProfilesInfoList());
947 } 944 }
948 945
949 void BrowserOptionsHandler::CreateProfile(const ListValue* args) { 946 void BrowserOptionsHandler::CreateProfile(const ListValue* args) {
950 // This handler could have been called in managed mode, for example because 947 // This handler could have been called in managed mode, for example because
951 // the user fiddled with the web inspector. Silently return in this case. 948 // the user fiddled with the web inspector. Silently return in this case.
952 if (!ProfileManager::IsMultipleProfilesEnabled()) 949 if (!ProfileManager::IsMultipleProfilesEnabled())
953 return; 950 return;
954 ProfileManager::CreateMultiProfileAsync(); 951 ProfileManager::CreateMultiProfileAsync();
955 } 952 }
956 953
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
992 std::string email = chromeos::UserManager::Get()->GetLoggedInUser().email(); 989 std::string email = chromeos::UserManager::Get()->GetLoggedInUser().email();
993 if (!email.empty()) { 990 if (!email.empty()) {
994 web_ui()->CallJavascriptFunction("BrowserOptions.updateAccountPicture"); 991 web_ui()->CallJavascriptFunction("BrowserOptions.updateAccountPicture");
995 base::StringValue email_value(email); 992 base::StringValue email_value(email);
996 web_ui()->CallJavascriptFunction("BrowserOptions.updateAccountPicture", 993 web_ui()->CallJavascriptFunction("BrowserOptions.updateAccountPicture",
997 email_value); 994 email_value);
998 } 995 }
999 } 996 }
1000 #endif 997 #endif
1001 998
1002 DictionaryValue* BrowserOptionsHandler::GetSyncStateDictionary() { 999 scoped_ptr<DictionaryValue> BrowserOptionsHandler::GetSyncStateDictionary() {
1003 DictionaryValue* sync_status = new DictionaryValue; 1000 scoped_ptr<DictionaryValue> sync_status(new DictionaryValue);
1004 ProfileSyncService* service(ProfileSyncServiceFactory:: 1001 ProfileSyncService* service(ProfileSyncServiceFactory::
1005 GetInstance()->GetForProfile(Profile::FromWebUI(web_ui()))); 1002 GetInstance()->GetForProfile(Profile::FromWebUI(web_ui())));
1006 sync_status->SetBoolean("syncSystemEnabled", !!service); 1003 sync_status->SetBoolean("syncSystemEnabled", !!service);
1007 if (!service) 1004 if (!service)
1008 return sync_status; 1005 return sync_status.Pass();
1009 1006
1010 sync_status->SetBoolean("setupCompleted", 1007 sync_status->SetBoolean("setupCompleted",
1011 service->HasSyncSetupCompleted()); 1008 service->HasSyncSetupCompleted());
1012 sync_status->SetBoolean("setupInProgress", service->FirstSetupInProgress()); 1009 sync_status->SetBoolean("setupInProgress", service->FirstSetupInProgress());
1013 1010
1014 string16 status_label; 1011 string16 status_label;
1015 string16 link_label; 1012 string16 link_label;
1016 SigninManager* signin = SigninManagerFactory::GetForProfile( 1013 SigninManager* signin = SigninManagerFactory::GetForProfile(
1017 Profile::FromWebUI(web_ui())); 1014 Profile::FromWebUI(web_ui()));
1018 1015
1019 bool status_has_error = sync_ui_util::GetStatusLabels( 1016 bool status_has_error = sync_ui_util::GetStatusLabels(
1020 service, *signin, sync_ui_util::WITH_HTML, &status_label, &link_label) == 1017 service, *signin, sync_ui_util::WITH_HTML, &status_label, &link_label) ==
1021 sync_ui_util::SYNC_ERROR; 1018 sync_ui_util::SYNC_ERROR;
1022 sync_status->SetString("statusText", status_label); 1019 sync_status->SetString("statusText", status_label);
1023 sync_status->SetString("actionLinkText", link_label); 1020 sync_status->SetString("actionLinkText", link_label);
1024 sync_status->SetBoolean("hasError", status_has_error); 1021 sync_status->SetBoolean("hasError", status_has_error);
1025 1022
1026 sync_status->SetBoolean("managed", service->IsManaged()); 1023 sync_status->SetBoolean("managed", service->IsManaged());
1027 sync_status->SetBoolean("hasUnrecoverableError", 1024 sync_status->SetBoolean("hasUnrecoverableError",
1028 service->unrecoverable_error_detected()); 1025 service->unrecoverable_error_detected());
1029 sync_status->SetBoolean("autoLoginVisible", 1026 sync_status->SetBoolean("autoLoginVisible",
1030 CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableAutologin) && 1027 CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableAutologin) &&
1031 service->AreCredentialsAvailable()); 1028 service->AreCredentialsAvailable());
1032 1029
1033 return sync_status; 1030 return sync_status.Pass();
1034 } 1031 }
1035 1032
1036 void BrowserOptionsHandler::HandleSelectDownloadLocation( 1033 void BrowserOptionsHandler::HandleSelectDownloadLocation(
1037 const ListValue* args) { 1034 const ListValue* args) {
1038 PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs(); 1035 PrefService* pref_service = Profile::FromWebUI(web_ui())->GetPrefs();
1039 select_folder_dialog_ = SelectFileDialog::Create(this); 1036 select_folder_dialog_ = SelectFileDialog::Create(this);
1040 select_folder_dialog_->SelectFile( 1037 select_folder_dialog_->SelectFile(
1041 SelectFileDialog::SELECT_FOLDER, 1038 SelectFileDialog::SELECT_FOLDER,
1042 l10n_util::GetStringUTF16(IDS_OPTIONS_DOWNLOADLOCATION_BROWSE_TITLE), 1039 l10n_util::GetStringUTF16(IDS_OPTIONS_DOWNLOADLOCATION_BROWSE_TITLE),
1043 pref_service->GetFilePath(prefs::kDownloadDefaultDirectory), 1040 pref_service->GetFilePath(prefs::kDownloadDefaultDirectory),
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
1414 } 1411 }
1415 1412
1416 void BrowserOptionsHandler::SetupSSLConfigSettings() { 1413 void BrowserOptionsHandler::SetupSSLConfigSettings() {
1417 base::FundamentalValue checked(rev_checking_enabled_.GetValue()); 1414 base::FundamentalValue checked(rev_checking_enabled_.GetValue());
1418 base::FundamentalValue disabled(rev_checking_enabled_.IsManaged()); 1415 base::FundamentalValue disabled(rev_checking_enabled_.IsManaged());
1419 web_ui()->CallJavascriptFunction( 1416 web_ui()->CallJavascriptFunction(
1420 "BrowserOptions.setCheckRevocationCheckboxState", checked, disabled); 1417 "BrowserOptions.setCheckRevocationCheckboxState", checked, disabled);
1421 } 1418 }
1422 1419
1423 } // namespace options2 1420 } // namespace options2
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/options2/browser_options_handler2.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698