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

Unified Diff: chrome/browser/prefs/session_startup_pref.cc

Issue 24930003: Migrate startup URLs pref. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rename remaining old pref value. Created 7 years, 2 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/prefs/session_startup_pref.cc
diff --git a/chrome/browser/prefs/session_startup_pref.cc b/chrome/browser/prefs/session_startup_pref.cc
index 478790a157d1c44ab61dc8fc84c2fae754dba090..3ce2fa67b450d75808bf3cabea4830863659df59 100644
--- a/chrome/browser/prefs/session_startup_pref.cc
+++ b/chrome/browser/prefs/session_startup_pref.cc
@@ -6,7 +6,9 @@
#include <string>
+#include "base/metrics/histogram.h"
#include "base/prefs/pref_service.h"
+#include "base/time/time.h"
#include "base/values.h"
#include "base/version.h"
#include "chrome/browser/prefs/scoped_user_pref_update.h"
@@ -21,6 +23,13 @@
namespace {
+enum StartupURLsMigrationMetrics {
+ STARTUP_URLS_MIGRATION_METRICS_PERFORMED,
+ STARTUP_URLS_MIGRATION_METRICS_NOT_PRESENT,
+ STARTUP_URLS_MIGRATION_METRICS_RESET,
+ STARTUP_URLS_MIGRATION_METRICS_MAX,
+};
+
// Converts a SessionStartupPref::Type to an integer written to prefs.
int TypeToPrefValue(SessionStartupPref::Type type) {
switch (type) {
@@ -62,10 +71,16 @@ void SessionStartupPref::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
registry->RegisterListPref(prefs::kURLsToRestoreOnStartup,
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF);
+ registry->RegisterListPref(prefs::kURLsToRestoreOnStartupOld,
+ user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
registry->RegisterBooleanPref(
prefs::kRestoreOnStartupMigrated,
false,
user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
+ registry->RegisterInt64Pref(
+ prefs::kRestoreStartupURLsMigrationTime,
+ false,
+ user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
}
// static
@@ -136,8 +151,56 @@ SessionStartupPref SessionStartupPref::GetStartupPref(PrefService* prefs) {
void SessionStartupPref::MigrateIfNecessary(PrefService* prefs) {
DCHECK(prefs);
+ // Check if we need to migrate the old version of the startup URLs preference
+ // to the new name, and also send metrics about the migration.
+ StartupURLsMigrationMetrics metrics_result =
+ STARTUP_URLS_MIGRATION_METRICS_MAX;
+ const base::ListValue* old_startup_urls =
+ prefs->GetList(prefs::kURLsToRestoreOnStartupOld);
+ if (!prefs->GetUserPrefValue(prefs::kRestoreStartupURLsMigrationTime)) {
+ // Record the absence of the migration timestamp, this will get overwritten
+ // below if migration occurs now.
+ metrics_result = STARTUP_URLS_MIGRATION_METRICS_NOT_PRESENT;
+
+ // Seems like we never migrated, do it if necessary.
+ if (!prefs->GetUserPrefValue(prefs::kURLsToRestoreOnStartup)) {
+ if (old_startup_urls && !old_startup_urls->empty()) {
+ prefs->Set(prefs::kURLsToRestoreOnStartup, *old_startup_urls);
+ prefs->ClearPref(prefs::kURLsToRestoreOnStartupOld);
+ }
+ metrics_result = STARTUP_URLS_MIGRATION_METRICS_PERFORMED;
+ }
+
+ prefs->SetInt64(prefs::kRestoreStartupURLsMigrationTime,
+ base::Time::Now().ToInternalValue());
+ } else if (old_startup_urls && !old_startup_urls->empty()) {
+ // Migration needs to be reset.
+ prefs->ClearPref(prefs::kURLsToRestoreOnStartupOld);
+ base::Time last_migration_time = base::Time::FromInternalValue(
+ prefs->GetInt64(prefs::kRestoreStartupURLsMigrationTime));
+ base::Time now = base::Time::Now();
+ prefs->SetInt64(prefs::kRestoreStartupURLsMigrationTime,
+ now.ToInternalValue());
+ if (now < last_migration_time)
+ last_migration_time = now;
+ HISTOGRAM_CUSTOM_TIMES("Settings.StartupURLsResetTime",
+ now - last_migration_time,
+ base::TimeDelta::FromDays(0),
+ base::TimeDelta::FromDays(7),
+ 50);
+ metrics_result = STARTUP_URLS_MIGRATION_METRICS_RESET;
+ }
+
+ // Record a metric migration event if something interesting happened.
+ if (metrics_result != STARTUP_URLS_MIGRATION_METRICS_MAX) {
+ UMA_HISTOGRAM_ENUMERATION(
+ "Settings.StartupURLsMigration",
+ metrics_result,
+ STARTUP_URLS_MIGRATION_METRICS_MAX);
+ }
+
if (!prefs->GetBoolean(prefs::kRestoreOnStartupMigrated)) {
- // Read existing values
+ // Read existing values.
const base::Value* homepage_is_new_tab_page_value =
prefs->GetUserPrefValue(prefs::kHomePageIsNewTabPage);
bool homepage_is_new_tab_page = true;
« no previous file with comments | « chrome/browser/prefs/pref_model_associator.cc ('k') | chrome/browser/profile_resetter/profile_resetter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698