OLD | NEW |
---|---|
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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/prefs/browser_prefs.h" | 5 #include "chrome/browser/prefs/browser_prefs.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" |
10 #include "base/prefs/pref_registry_simple.h" | 10 #include "base/prefs/pref_registry_simple.h" |
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
217 #if defined(TOOLKIT_VIEWS) | 217 #if defined(TOOLKIT_VIEWS) |
218 #include "chrome/browser/ui/browser_view_prefs.h" | 218 #include "chrome/browser/ui/browser_view_prefs.h" |
219 #endif | 219 #endif |
220 | 220 |
221 #if defined(USE_ASH) | 221 #if defined(USE_ASH) |
222 #include "chrome/browser/ui/ash/chrome_launcher_prefs.h" | 222 #include "chrome/browser/ui/ash/chrome_launcher_prefs.h" |
223 #endif | 223 #endif |
224 | 224 |
225 namespace { | 225 namespace { |
226 | 226 |
227 enum MigratedPreferences { | |
228 NO_PREFS = 0, | |
229 DNS_PREFS = 1 << 0, | |
230 WINDOWS_PREFS = 1 << 1, | |
231 }; | |
232 | |
233 // A previous feature (see | |
234 // chrome/browser/protector/protected_prefs_watcher.cc in source | |
235 // control history) used this string as a prefix for various prefs it | |
236 // registered. We keep it here for now to clear out those old prefs in | |
237 // MigrateUserPrefs. | |
238 const char kBackupPref[] = "backup"; | |
239 | |
240 #if !defined(OS_ANDROID) | 227 #if !defined(OS_ANDROID) |
241 // The AutomaticProfileResetter service used this preference to save that the | 228 // The AutomaticProfileResetter service used this preference to save that the |
242 // profile reset prompt had already been shown, however, the preference has been | 229 // profile reset prompt had already been shown, however, the preference has been |
243 // renamed in Local State. We keep the name here for now so that we can clear | 230 // renamed in Local State. We keep the name here for now so that we can clear |
244 // out legacy values. | 231 // out legacy values. |
245 // TODO(engedy): Remove this and usages in M42 or later. See crbug.com/398813. | 232 // TODO(engedy): Remove this and usages in M42 or later. See crbug.com/398813. |
246 const char kLegacyProfileResetPromptMemento[] = "profile.reset_prompt_memento"; | 233 const char kLegacyProfileResetPromptMemento[] = "profile.reset_prompt_memento"; |
247 #endif | 234 #endif |
248 | 235 |
249 } // namespace | 236 } // namespace |
250 | 237 |
251 namespace chrome { | 238 namespace chrome { |
252 | 239 |
253 void RegisterLocalState(PrefRegistrySimple* registry) { | 240 void RegisterLocalState(PrefRegistrySimple* registry) { |
254 // Prefs in Local State. | |
255 registry->RegisterIntegerPref(prefs::kMultipleProfilePrefMigration, 0); | |
256 | 241 |
257 // Please keep this list alphabetized. | 242 // Please keep this list alphabetized. |
258 AppListService::RegisterPrefs(registry); | 243 AppListService::RegisterPrefs(registry); |
259 browser_shutdown::RegisterPrefs(registry); | 244 browser_shutdown::RegisterPrefs(registry); |
260 BrowserProcessImpl::RegisterPrefs(registry); | 245 BrowserProcessImpl::RegisterPrefs(registry); |
261 ChromeMetricsServiceClient::RegisterPrefs(registry); | 246 ChromeMetricsServiceClient::RegisterPrefs(registry); |
262 chrome_prefs::RegisterPrefs(registry); | 247 chrome_prefs::RegisterPrefs(registry); |
263 chrome_variations::VariationsService::RegisterPrefs(registry); | 248 chrome_variations::VariationsService::RegisterPrefs(registry); |
264 component_updater::RegisterPrefsForRecoveryComponent(registry); | 249 component_updater::RegisterPrefsForRecoveryComponent(registry); |
265 component_updater::SupervisedUserWhitelistInstaller::RegisterPrefs(registry); | 250 component_updater::SupervisedUserWhitelistInstaller::RegisterPrefs(registry); |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
525 #if defined(TOOLKIT_VIEWS) | 510 #if defined(TOOLKIT_VIEWS) |
526 RegisterBrowserViewProfilePrefs(registry); | 511 RegisterBrowserViewProfilePrefs(registry); |
527 RegisterInvertBubbleUserPrefs(registry); | 512 RegisterInvertBubbleUserPrefs(registry); |
528 #endif | 513 #endif |
529 | 514 |
530 #if defined(USE_ASH) | 515 #if defined(USE_ASH) |
531 ash::RegisterChromeLauncherUserPrefs(registry); | 516 ash::RegisterChromeLauncherUserPrefs(registry); |
532 #endif | 517 #endif |
533 | 518 |
534 // Preferences registered only for migration (clearing or moving to a new key) | 519 // Preferences registered only for migration (clearing or moving to a new key) |
535 // go here. | 520 // go here. |
gab
2015/02/24 20:55:20
Remove this comment I guess now that it comments n
rkaplow
2015/02/24 22:41:11
make sense. We actually have this comment on line
| |
536 registry->RegisterDictionaryPref( | |
537 kBackupPref, | |
538 new base::DictionaryValue(), | |
539 user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF); | |
540 } | 521 } |
541 | 522 |
542 void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { | 523 void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { |
543 RegisterProfilePrefs(registry); | 524 RegisterProfilePrefs(registry); |
544 | 525 |
545 #if defined(OS_CHROMEOS) | 526 #if defined(OS_CHROMEOS) |
546 chromeos::PowerPrefs::RegisterUserProfilePrefs(registry); | 527 chromeos::PowerPrefs::RegisterUserProfilePrefs(registry); |
547 #endif | 528 #endif |
548 } | 529 } |
549 | 530 |
550 void RegisterScreenshotPrefs(PrefRegistrySimple* registry) { | 531 void RegisterScreenshotPrefs(PrefRegistrySimple* registry) { |
551 registry->RegisterBooleanPref(prefs::kDisableScreenshots, false); | 532 registry->RegisterBooleanPref(prefs::kDisableScreenshots, false); |
552 } | 533 } |
553 | 534 |
554 #if defined(OS_CHROMEOS) | 535 #if defined(OS_CHROMEOS) |
555 void RegisterLoginProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { | 536 void RegisterLoginProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { |
556 RegisterProfilePrefs(registry); | 537 RegisterProfilePrefs(registry); |
557 | 538 |
558 chromeos::PowerPrefs::RegisterLoginProfilePrefs(registry); | 539 chromeos::PowerPrefs::RegisterLoginProfilePrefs(registry); |
559 } | 540 } |
560 #endif | 541 #endif |
561 | 542 |
562 void MigrateUserPrefs(Profile* profile) { | 543 void MigrateObsoleteBrowserPrefs(Profile* profile, PrefService* local_state) { |
563 PrefService* prefs = profile->GetPrefs(); | 544 // This method should be periodically pruned of year+ old migrations. |
564 | 545 |
565 // Cleanup prefs from now-removed protector feature. | 546 // Added 05/2014. |
566 prefs->ClearPref(kBackupPref); | 547 #if defined(TOOLKIT_VIEWS) |
548 MigrateBrowserTabStripPrefs(local_state); | |
549 #endif | |
550 | |
551 // Added 08/2014. | |
552 #if !defined(OS_ANDROID) | |
553 local_state->ClearPref(kLegacyProfileResetPromptMemento); | |
554 #endif | |
555 } | |
556 | |
557 void MigrateObsoleteProfilePrefs(Profile* profile) { | |
558 // This method should be periodically pruned of year+ old migrations. | |
559 PrefService* profile_prefs = profile->GetPrefs(); | |
560 | |
561 #if defined(OS_MACOSX) && !defined(OS_IOS) | |
562 // Added 06/2014. | |
563 autofill::AutofillManager::MigrateUserPrefs(profile_prefs); | |
564 #endif // defined(OS_MACOSX) && !defined(OS_IOS) | |
565 | |
566 // Added 07/2014. | |
567 translate::TranslatePrefs::MigrateUserPrefs(profile_prefs, | |
568 prefs::kAcceptLanguages); | |
567 | 569 |
568 #if !defined(OS_ANDROID) | 570 #if !defined(OS_ANDROID) |
571 // Added 08/2014. | |
569 // Migrate kNetworkPredictionEnabled to kNetworkPredictionOptions when not on | 572 // Migrate kNetworkPredictionEnabled to kNetworkPredictionOptions when not on |
570 // Android. On Android, platform-specific code performs preference migration. | 573 // Android. On Android, platform-specific code performs preference migration. |
571 // TODO(bnc): https://crbug.com/401970 Remove migration code one year after | 574 // TODO(bnc): https://crbug.com/401970 Remove migration code one year after |
572 // M38. | 575 // M38. |
573 chrome_browser_net::MigrateNetworkPredictionUserPrefs(prefs); | 576 chrome_browser_net::MigrateNetworkPredictionUserPrefs(profile_prefs); |
574 #endif | 577 #endif |
575 | 578 |
576 PromoResourceService::MigrateUserPrefs(prefs); | |
577 translate::TranslatePrefs::MigrateUserPrefs(prefs, prefs::kAcceptLanguages); | |
578 | |
579 #if defined(OS_MACOSX) && !defined(OS_IOS) | |
580 autofill::AutofillManager::MigrateUserPrefs(prefs); | |
581 #endif // defined(OS_MACOSX) && !defined(OS_IOS) | |
582 | |
583 #if defined(OS_CHROMEOS) && defined(ENABLE_APP_LIST) | 579 #if defined(OS_CHROMEOS) && defined(ENABLE_APP_LIST) |
580 // Added 02/2015. | |
584 MigrateGoogleNowPrefs(profile); | 581 MigrateGoogleNowPrefs(profile); |
585 #endif | 582 #endif |
586 } | 583 } |
587 | 584 |
588 void MigrateBrowserPrefs(Profile* profile, PrefService* local_state) { | |
589 // Copy pref values which have been migrated to user_prefs from local_state, | |
590 // or remove them from local_state outright, if copying is not required. | |
591 int current_version = | |
592 local_state->GetInteger(prefs::kMultipleProfilePrefMigration); | |
593 PrefRegistrySimple* registry = static_cast<PrefRegistrySimple*>( | |
594 local_state->DeprecatedGetPrefRegistry()); | |
595 | |
596 if (!(current_version & DNS_PREFS)) { | |
597 registry->RegisterListPref(prefs::kDnsStartupPrefetchList); | |
598 local_state->ClearPref(prefs::kDnsStartupPrefetchList); | |
599 | |
600 registry->RegisterListPref(prefs::kDnsHostReferralList); | |
601 local_state->ClearPref(prefs::kDnsHostReferralList); | |
602 | |
603 current_version |= DNS_PREFS; | |
604 local_state->SetInteger(prefs::kMultipleProfilePrefMigration, | |
605 current_version); | |
606 } | |
607 | |
608 PrefService* user_prefs = profile->GetPrefs(); | |
609 if (!(current_version & WINDOWS_PREFS)) { | |
610 registry->RegisterDictionaryPref(prefs::kBrowserWindowPlacement); | |
611 if (local_state->HasPrefPath(prefs::kBrowserWindowPlacement)) { | |
612 const PrefService::Preference* pref = | |
613 local_state->FindPreference(prefs::kBrowserWindowPlacement); | |
614 DCHECK(pref); | |
615 user_prefs->Set(prefs::kBrowserWindowPlacement, | |
616 *(pref->GetValue())); | |
617 } | |
618 local_state->ClearPref(prefs::kBrowserWindowPlacement); | |
619 | |
620 current_version |= WINDOWS_PREFS; | |
621 local_state->SetInteger(prefs::kMultipleProfilePrefMigration, | |
622 current_version); | |
623 } | |
624 | |
625 #if !defined(OS_ANDROID) | |
626 local_state->ClearPref(kLegacyProfileResetPromptMemento); | |
627 #endif | |
628 | |
629 #if defined(OS_CHROMEOS) | |
630 chromeos::default_pinned_apps_field_trial::MigratePrefs(local_state); | |
631 #endif | |
632 | |
633 #if defined(TOOLKIT_VIEWS) | |
634 MigrateBrowserTabStripPrefs(local_state); | |
635 #endif | |
636 } | |
637 | |
638 // As part of the migration from per-profile to per-partition HostZoomMaps, | 585 // As part of the migration from per-profile to per-partition HostZoomMaps, |
639 // we need to detect if an existing per-profile set of preferences exist, and | 586 // we need to detect if an existing per-profile set of preferences exist, and |
640 // if so convert them to be per-partition. We migrate any per-profile zoom | 587 // if so convert them to be per-partition. We migrate any per-profile zoom |
641 // level prefs via zoom_level_prefs. | 588 // level prefs via zoom_level_prefs. |
642 // Code that updates zoom prefs in the profile prefs store has been removed, | 589 // Code that updates zoom prefs in the profile prefs store has been removed, |
643 // so once we clear these values here, they should never get set again. | 590 // so once we clear these values here, they should never get set again. |
644 // TODO(wjmaclean): Remove this migration machinery after histograms show | 591 // TODO(wjmaclean): Remove this migration machinery after histograms show |
645 // that an aceptable percentage of users have been migrated. | 592 // that an aceptable percentage of users have been migrated. |
646 // crbug.com/420643 | 593 // crbug.com/420643 |
647 void MigrateProfileZoomLevelPrefs(Profile* profile) { | 594 void MigrateProfileZoomLevelPrefs(Profile* profile) { |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
682 host_zoom_dictionary, false /* sanitize_partition_host_zoom_levels */); | 629 host_zoom_dictionary, false /* sanitize_partition_host_zoom_levels */); |
683 | 630 |
684 // We're done migrating the profile per-host zoom level values, so we clear | 631 // We're done migrating the profile per-host zoom level values, so we clear |
685 // them all. | 632 // them all. |
686 DictionaryPrefUpdate host_zoom_dictionary_update( | 633 DictionaryPrefUpdate host_zoom_dictionary_update( |
687 prefs, prefs::kPerHostZoomLevelsDeprecated); | 634 prefs, prefs::kPerHostZoomLevelsDeprecated); |
688 host_zoom_dictionary_update->Clear(); | 635 host_zoom_dictionary_update->Clear(); |
689 } | 636 } |
690 | 637 |
691 } // namespace chrome | 638 } // namespace chrome |
OLD | NEW |