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 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_PREFS_SESSION_STARTUP_PREF_H__ 6 #define CHROME_BROWSER_PREFS_SESSION_STARTUP_PREF_H__ 7 8 #include <vector> 9 10 #include "url/gurl.h" 11 12 class PrefService; 13 class Profile; 14 15 namespace user_prefs { 16 class PrefRegistrySyncable; 17 } 18 19 // StartupPref specifies what should happen at startup for a specified profile. 20 // StartupPref is stored in the preferences for a particular profile. 21 struct SessionStartupPref { 22 enum Type { 23 // Indicates the user wants to open the New Tab page. 24 DEFAULT, 25 26 // Deprecated. See comment in session_startup_pref.cc 27 HOMEPAGE, 28 29 // Indicates the user wants to restore the last session. 30 LAST, 31 32 // Indicates the user wants to restore a specific set of URLs. The URLs 33 // are contained in urls. 34 URLS, 35 36 // Number of values in this enum. 37 TYPE_COUNT 38 }; 39 40 // For historical reasons the enum and value registered in the prefs don't 41 // line up. These are the values registered in prefs. 42 // The values are also recorded in Settings.StartupPageLoadSettings histogram, 43 // so make sure to update histograms.xml if you change these. 44 static const int kPrefValueHomePage = 0; // Deprecated 45 static const int kPrefValueLast = 1; 46 static const int kPrefValueURLs = 4; 47 static const int kPrefValueNewTab = 5; 48 static const int kPrefValueMax = 6; 49 50 static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); 51 52 // Returns the default value for |type|. 53 static Type GetDefaultStartupType(); 54 55 // What should happen on startup for the specified profile. 56 static void SetStartupPref(Profile* profile, const SessionStartupPref& pref); 57 static void SetStartupPref(PrefService* prefs, 58 const SessionStartupPref& pref); 59 static SessionStartupPref GetStartupPref(Profile* profile); 60 static SessionStartupPref GetStartupPref(PrefService* prefs); 61 62 // If the user had the "restore on startup" property set to the deprecated 63 // "Open the home page" value, this migrates them to a value that will have 64 // the same effect. 65 static void MigrateIfNecessary(PrefService* prefs); 66 67 // The default startup pref for Mac used to be LAST, now it's DEFAULT. This 68 // migrates old users by writing out the preference explicitly. 69 static void MigrateMacDefaultPrefIfNecessary(PrefService* prefs); 70 71 // Whether the startup type and URLs are managed via policy. 72 static bool TypeIsManaged(PrefService* prefs); 73 static bool URLsAreManaged(PrefService* prefs); 74 75 // Whether the startup type has not been overridden from its default. 76 static bool TypeIsDefault(PrefService* prefs); 77 78 // Converts an integer pref value to a SessionStartupPref::Type. 79 static SessionStartupPref::Type PrefValueToType(int pref_value); 80 81 explicit SessionStartupPref(Type type); 82 83 ~SessionStartupPref(); 84 85 // What to do on startup. 86 Type type; 87 88 // The URLs to restore. Only used if type == URLS. 89 std::vector<GURL> urls; 90 }; 91 92 #endif // CHROME_BROWSER_PREFS_SESSION_STARTUP_PREF_H__ 93