| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/options/personal_options_handler.h" | 5 #include "chrome/browser/ui/webui/options/personal_options_handler.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 #include "base/path_service.h" | 12 #include "base/path_service.h" |
| 13 #include "base/stl_util-inl.h" | 13 #include "base/stl_util-inl.h" |
| 14 #include "base/stringprintf.h" | 14 #include "base/stringprintf.h" |
| 15 #include "base/time.h" | 15 #include "base/time.h" |
| 16 #include "base/utf_string_conversions.h" | 16 #include "base/utf_string_conversions.h" |
| 17 #include "base/values.h" | 17 #include "base/values.h" |
| 18 #include "build/build_config.h" | 18 #include "build/build_config.h" |
| 19 #include "chrome/browser/prefs/pref_service.h" |
| 19 #include "chrome/browser/profiles/profile.h" | 20 #include "chrome/browser/profiles/profile.h" |
| 20 #include "chrome/browser/profiles/profile_manager.h" | 21 #include "chrome/browser/profiles/profile_manager.h" |
| 21 #include "chrome/browser/sync/profile_sync_service.h" | 22 #include "chrome/browser/sync/profile_sync_service.h" |
| 22 #include "chrome/browser/sync/sync_setup_flow.h" | 23 #include "chrome/browser/sync/sync_setup_flow.h" |
| 23 #include "chrome/browser/sync/sync_ui_util.h" | 24 #include "chrome/browser/sync/sync_ui_util.h" |
| 24 #include "chrome/browser/themes/theme_service.h" | 25 #include "chrome/browser/themes/theme_service.h" |
| 25 #include "chrome/browser/themes/theme_service_factory.h" | 26 #include "chrome/browser/themes/theme_service_factory.h" |
| 26 #include "chrome/browser/ui/webui/options/options_managed_banner_handler.h" | 27 #include "chrome/browser/ui/webui/options/options_managed_banner_handler.h" |
| 27 #include "chrome/common/chrome_paths.h" | 28 #include "chrome/common/chrome_paths.h" |
| 28 #include "chrome/common/chrome_switches.h" | 29 #include "chrome/common/chrome_switches.h" |
| 29 #include "chrome/common/net/gaia/google_service_auth_error.h" | 30 #include "chrome/common/net/gaia/google_service_auth_error.h" |
| 31 #include "chrome/common/pref_names.h" |
| 30 #include "chrome/common/url_constants.h" | 32 #include "chrome/common/url_constants.h" |
| 31 #include "content/browser/user_metrics.h" | 33 #include "content/browser/user_metrics.h" |
| 32 #include "content/common/notification_service.h" | 34 #include "content/common/notification_service.h" |
| 33 #include "grit/chromium_strings.h" | 35 #include "grit/chromium_strings.h" |
| 34 #include "grit/generated_resources.h" | 36 #include "grit/generated_resources.h" |
| 35 #include "grit/locale_settings.h" | 37 #include "grit/locale_settings.h" |
| 36 #include "grit/theme_resources.h" | 38 #include "grit/theme_resources.h" |
| 37 #include "ui/base/l10n/l10n_util.h" | 39 #include "ui/base/l10n/l10n_util.h" |
| 38 | 40 |
| 39 #if defined(OS_CHROMEOS) | 41 #if defined(OS_CHROMEOS) |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 void PersonalOptionsHandler::Observe(NotificationType type, | 210 void PersonalOptionsHandler::Observe(NotificationType type, |
| 209 const NotificationSource& source, | 211 const NotificationSource& source, |
| 210 const NotificationDetails& details) { | 212 const NotificationDetails& details) { |
| 211 if (type == NotificationType::BROWSER_THEME_CHANGED) { | 213 if (type == NotificationType::BROWSER_THEME_CHANGED) { |
| 212 ObserveThemeChanged(); | 214 ObserveThemeChanged(); |
| 213 #if defined(OS_CHROMEOS) | 215 #if defined(OS_CHROMEOS) |
| 214 } else if (type == NotificationType::LOGIN_USER_IMAGE_CHANGED) { | 216 } else if (type == NotificationType::LOGIN_USER_IMAGE_CHANGED) { |
| 215 LoadAccountPicture(NULL); | 217 LoadAccountPicture(NULL); |
| 216 #endif | 218 #endif |
| 217 } else { | 219 } else { |
| 220 if (type == NotificationType::PREF_CHANGED) { |
| 221 std::string* pref_name = Details<std::string>(details).ptr(); |
| 222 if (*pref_name == prefs::kAutofillEnabled) |
| 223 UpdateAutofillUI(); |
| 224 } |
| 218 OptionsPageUIHandler::Observe(type, source, details); | 225 OptionsPageUIHandler::Observe(type, source, details); |
| 219 } | 226 } |
| 220 } | 227 } |
| 221 | 228 |
| 222 void PersonalOptionsHandler::OnStateChanged() { | 229 void PersonalOptionsHandler::OnStateChanged() { |
| 223 string16 status_label; | 230 string16 status_label; |
| 224 string16 link_label; | 231 string16 link_label; |
| 225 ProfileSyncService* service = web_ui_->GetProfile()->GetProfileSyncService(); | 232 ProfileSyncService* service = web_ui_->GetProfile()->GetProfileSyncService(); |
| 226 DCHECK(service); | 233 DCHECK(service); |
| 227 bool managed = service->IsManaged(); | 234 bool managed = service->IsManaged(); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 banner_handler_.reset( | 360 banner_handler_.reset( |
| 354 OptionsManagedBannerHandler::Create(web_ui_, | 361 OptionsManagedBannerHandler::Create(web_ui_, |
| 355 ASCIIToUTF16("PersonalOptions"), | 362 ASCIIToUTF16("PersonalOptions"), |
| 356 OPTIONS_PAGE_CONTENT)); | 363 OPTIONS_PAGE_CONTENT)); |
| 357 | 364 |
| 358 // Listen for theme installation. | 365 // Listen for theme installation. |
| 359 registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED, | 366 registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED, |
| 360 NotificationService::AllSources()); | 367 NotificationService::AllSources()); |
| 361 ObserveThemeChanged(); | 368 ObserveThemeChanged(); |
| 362 | 369 |
| 370 // Listen for autofill status changes. |
| 371 autofill_enabled_.Init(prefs::kAutofillEnabled, |
| 372 web_ui_->GetProfile()->GetPrefs(), this); |
| 373 UpdateAutofillUI(); |
| 374 |
| 363 ProfileSyncService* sync_service = | 375 ProfileSyncService* sync_service = |
| 364 web_ui_->GetProfile()->GetProfileSyncService(); | 376 web_ui_->GetProfile()->GetProfileSyncService(); |
| 365 if (sync_service) { | 377 if (sync_service) { |
| 366 sync_service->AddObserver(this); | 378 sync_service->AddObserver(this); |
| 367 OnStateChanged(); | 379 OnStateChanged(); |
| 368 | 380 |
| 369 DictionaryValue args; | 381 DictionaryValue args; |
| 370 SyncSetupFlow::GetArgsForConfigure(sync_service, &args); | 382 SyncSetupFlow::GetArgsForConfigure(sync_service, &args); |
| 371 | 383 |
| 372 web_ui_->CallJavascriptFunction("PersonalOptions.setRegisteredDataTypes", | 384 web_ui_->CallJavascriptFunction("PersonalOptions.setRegisteredDataTypes", |
| 373 args); | 385 args); |
| 374 } else { | 386 } else { |
| 375 web_ui_->CallJavascriptFunction("options.PersonalOptions.hideSyncSection"); | 387 web_ui_->CallJavascriptFunction("options.PersonalOptions.hideSyncSection"); |
| 376 } | 388 } |
| 377 } | 389 } |
| 378 | 390 |
| 379 void PersonalOptionsHandler::ThemesReset(const ListValue* args) { | 391 void PersonalOptionsHandler::ThemesReset(const ListValue* args) { |
| 380 UserMetricsRecordAction(UserMetricsAction("Options_ThemesReset")); | 392 UserMetricsRecordAction(UserMetricsAction("Options_ThemesReset")); |
| 381 ThemeServiceFactory::GetForProfile(web_ui_->GetProfile())->UseDefaultTheme(); | 393 ThemeServiceFactory::GetForProfile(web_ui_->GetProfile())->UseDefaultTheme(); |
| 382 } | 394 } |
| 383 | 395 |
| 384 #if defined(TOOLKIT_GTK) | 396 #if defined(TOOLKIT_GTK) |
| 385 void PersonalOptionsHandler::ThemesSetGTK(const ListValue* args) { | 397 void PersonalOptionsHandler::ThemesSetGTK(const ListValue* args) { |
| 386 UserMetricsRecordAction(UserMetricsAction("Options_GtkThemeSet")); | 398 UserMetricsRecordAction(UserMetricsAction("Options_GtkThemeSet")); |
| 387 ThemeServiceFactory::GetForProfile(web_ui_->GetProfile())->SetNativeTheme(); | 399 ThemeServiceFactory::GetForProfile(web_ui_->GetProfile())->SetNativeTheme(); |
| 388 } | 400 } |
| 389 #endif | 401 #endif |
| 390 | 402 |
| 403 void PersonalOptionsHandler::UpdateAutofillUI() { |
| 404 // Update AutoFill button state. |
| 405 bool autofill_disabled = autofill_enabled_.IsManaged() && !*autofill_enabled_; |
| 406 scoped_ptr<Value> autofill_enabled_state( |
| 407 Value::CreateBooleanValue(!autofill_disabled)); |
| 408 web_ui_->CallJavascriptFunction("PersonalOptions.setAutoFillButtonEnabled", |
| 409 *autofill_enabled_state); |
| 410 } |
| 411 |
| 391 #if defined(OS_CHROMEOS) | 412 #if defined(OS_CHROMEOS) |
| 392 void PersonalOptionsHandler::LoadAccountPicture(const ListValue* args) { | 413 void PersonalOptionsHandler::LoadAccountPicture(const ListValue* args) { |
| 393 const chromeos::UserManager::User& user = | 414 const chromeos::UserManager::User& user = |
| 394 chromeos::UserManager::Get()->logged_in_user(); | 415 chromeos::UserManager::Get()->logged_in_user(); |
| 395 std::string email = user.email(); | 416 std::string email = user.email(); |
| 396 if (!email.empty()) { | 417 if (!email.empty()) { |
| 397 // int64 is either long or long long, but we need a certain format | 418 // int64 is either long or long long, but we need a certain format |
| 398 // specifier. | 419 // specifier. |
| 399 long long timestamp = base::TimeTicks::Now().ToInternalValue(); | 420 long long timestamp = base::TimeTicks::Now().ToInternalValue(); |
| 400 StringValue image_url( | 421 StringValue image_url( |
| 401 StringPrintf("%s%s?id=%lld", | 422 StringPrintf("%s%s?id=%lld", |
| 402 chrome::kChromeUIUserImageURL, | 423 chrome::kChromeUIUserImageURL, |
| 403 email.c_str(), | 424 email.c_str(), |
| 404 timestamp)); | 425 timestamp)); |
| 405 web_ui_->CallJavascriptFunction("PersonalOptions.setAccountPicture", | 426 web_ui_->CallJavascriptFunction("PersonalOptions.setAccountPicture", |
| 406 image_url); | 427 image_url); |
| 407 | 428 |
| 408 StringValue email_value(email); | 429 StringValue email_value(email); |
| 409 web_ui_->CallJavascriptFunction("AccountsOptions.updateAccountPicture", | 430 web_ui_->CallJavascriptFunction("AccountsOptions.updateAccountPicture", |
| 410 email_value, image_url); | 431 email_value, image_url); |
| 411 } | 432 } |
| 412 } | 433 } |
| 413 #endif | 434 #endif |
| OLD | NEW |