Chromium Code Reviews| OLD | NEW |
|---|---|
| 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/prefs/session_startup_pref.h" | 5 #include "chrome/browser/prefs/session_startup_pref.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/browser/net/url_fixer_upper.h" | 10 #include "chrome/browser/net/url_fixer_upper.h" |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 125 DCHECK(profile); | 125 DCHECK(profile); |
| 126 return GetStartupPref(profile->GetPrefs()); | 126 return GetStartupPref(profile->GetPrefs()); |
| 127 } | 127 } |
| 128 | 128 |
| 129 // static | 129 // static |
| 130 SessionStartupPref SessionStartupPref::GetStartupPref(PrefService* prefs) { | 130 SessionStartupPref SessionStartupPref::GetStartupPref(PrefService* prefs) { |
| 131 DCHECK(prefs); | 131 DCHECK(prefs); |
| 132 SessionStartupPref pref( | 132 SessionStartupPref pref( |
| 133 PrefValueToType(prefs->GetInteger(prefs::kRestoreOnStartup))); | 133 PrefValueToType(prefs->GetInteger(prefs::kRestoreOnStartup))); |
| 134 | 134 |
| 135 // Migrate from "Open the home page" to "Open the following URLs". If the user | 135 // Migrate from "Open the home page" to "Open the following URLs". If the |
| 136 // had the "Open the homepage" option selected, then we need to switch them to | 136 // user had the "Open the home page" option selected, switch them to "Open |
| 137 // "Open the following URLs" and set the list of URLs to a list containing | 137 // the following URLs" and set the list of URLs to a one-item list containing |
| 138 // just the user's homepage. | 138 // their homepage. If the kRestoreOnStartup pref is blank, it could be a user |
| 139 if (pref.type == SessionStartupPref::HOMEPAGE) { | 139 // coming from Chrome 18 or lower, who had "open the homepage" selected |
| 140 // (since that was the default) or it could be a user who originally | |
| 141 // installed Chrome 19 or higher. We distinguish between these cases using | |
| 142 // the kHomePageIsNewTabPage pref: A Chrome 18 user wanting to open a | |
| 143 // homepage other than the NTP on startup would have set | |
| 144 // kHomePageIsNewTabPage to false. If kHomePageIsNewTabPage is true, there is | |
| 145 // no need to do the migration; the new default behavior is to open the NTP. | |
| 146 if (pref.type == SessionStartupPref::HOMEPAGE || | |
| 147 (!prefs->HasPrefPath(prefs::kRestoreOnStartup) && | |
| 148 !prefs->GetBoolean(prefs::kHomePageIsNewTabPage))) { | |
|
Mattias Nissler (ping if slow)
2012/04/16 09:21:46
This is likely to break in case there is policy pr
| |
| 140 prefs->SetInteger(prefs::kRestoreOnStartup, kPrefValueURLs); | 149 prefs->SetInteger(prefs::kRestoreOnStartup, kPrefValueURLs); |
| 141 pref.type = SessionStartupPref::URLS; | 150 pref.type = SessionStartupPref::URLS; |
| 142 SetNewURLList(prefs); | 151 SetNewURLList(prefs); |
| 152 } else if (!prefs->HasPrefPath(prefs::kRestoreOnStartup)) { | |
|
Mattias Nissler (ping if slow)
2012/04/16 09:21:46
Setting a pref to the default is bad. This breaks
| |
| 153 // If we didn't do the migration, but the kRestoreOnStartup pref is blank, | |
| 154 // then set it explicitly to the default value, so that we won't do the | |
| 155 // migration the next time this function is called. | |
| 156 prefs->SetInteger(prefs::kRestoreOnStartup, | |
| 157 TypeToPrefValue(GetDefaultStartupType())); | |
| 143 } | 158 } |
| 144 | 159 |
| 145 // Always load the urls, even if the pref type isn't URLS. This way the | 160 // Always load the urls, even if the pref type isn't URLS. This way the |
| 146 // preferences panels can show the user their last choice. | 161 // preferences panels can show the user their last choice. |
| 147 const ListValue* url_list = prefs->GetList(prefs::kURLsToRestoreOnStartup); | 162 const ListValue* url_list = prefs->GetList(prefs::kURLsToRestoreOnStartup); |
| 148 URLListToPref(url_list, &pref); | 163 URLListToPref(url_list, &pref); |
| 149 | 164 |
| 150 return pref; | 165 return pref; |
| 151 } | 166 } |
| 152 | 167 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 209 CHECK(prefs_watcher->GetBackupForPref( | 224 CHECK(prefs_watcher->GetBackupForPref( |
| 210 prefs::kURLsToRestoreOnStartup)->GetAsList(&url_list)); | 225 prefs::kURLsToRestoreOnStartup)->GetAsList(&url_list)); |
| 211 URLListToPref(url_list, &backup_pref); | 226 URLListToPref(url_list, &backup_pref); |
| 212 | 227 |
| 213 return backup_pref; | 228 return backup_pref; |
| 214 } | 229 } |
| 215 | 230 |
| 216 SessionStartupPref::SessionStartupPref(Type type) : type(type) {} | 231 SessionStartupPref::SessionStartupPref(Type type) : type(type) {} |
| 217 | 232 |
| 218 SessionStartupPref::~SessionStartupPref() {} | 233 SessionStartupPref::~SessionStartupPref() {} |
| OLD | NEW |